成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關注微信公眾號

如何在應用程序中高效的使用存儲過程
2008-04-28   

  存儲過程在SQL Server 2005中,顯示在可編程性子菜單中,存儲過程主要是把一組SQL語句和控制語句組成起來,然后封裝在一起的過程,它駐留在數據庫中,可以被客戶應用程序調用,也可以從另一個存儲過程或觸發器調用。

  而存儲過程主要在使用的時候有哪些優點,我們看下面主要的介紹:

  進行模塊化程序設計

  創建的過程只需一次性將其存儲在數據庫中,便可以在應用程序中調用該存儲過程。它可以把數據庫主要的關聯性的業務通過SQL語句有效的組織在一起,也有著大量的語法結構,類似于編程語言相關的嚴謹性,一般由專門的數據庫設計人員去編寫。

  高效的執行速度

  存儲過程是對SQL語句進行編譯性的存儲,要比Transact-SQL 批代碼的執行更快,存儲過程在創建的時候就需要對其進行分析和優化,并可在首次執行該過程后使用該過程的內存中版本。每次運行Transact-SQL 語句時,都要從客戶端重復發送,并且在SQL Server每次執行這些語句時,都要對其進行編譯和優化,而存儲過程就節省了編譯的時間。

  減少網絡的通信流量

  如果存儲過程只需要一個簡單的查詢,可能是體現不出網絡的通信流量,而如果有一個數百行的Transact-SQL語句的代碼的操作由一個存儲過就可以實現, 就不需要在網絡中發送數百行的代碼,減少網絡的通信流量,增加了一些不必要的網絡負載。

  方便的管理與部署

  現在流行的開發語言都是編譯性的,如JAVA或.NET,如果SQL語句寫在程序中,對這些數據的業務進行修改的時候,我們就會對其重新編譯,然后再部署到服務器上,有時甚至會影響了應用程序其它功能的模塊,而用存儲過程方式實現,就不需要對應用程序進行重編譯,修改存儲過程就可以直接實現了。它采用一種分布式的工作方式,應用程序和數據庫的編碼工作可以獨立的進行,而不會相互影響。

  提供了更安全的實現機制

  系統管理員通過對執行某一存儲過程的權限進行限制,從而能夠實現對相應的數據訪問權限的限制,避免非授權用戶對數據的訪問,保證數據的安全。

  現在我們來列舉下存儲過程在實際應用中會有哪些好處,先來看實際中的這兩種應用:

  1) 現在要我們設計一個權限方面的Web應用的軟件系統,它有如下幾種功能:

  1、 非登錄用戶不準進入;

  2、 登錄的用戶而在系統中的積分為零了,又不允許進入;

  3、 此用戶由于發表一些過激的話語現在被管理員禁用他的權限了,又不允許進入;

  4、 此用戶所在的IP段是不允許訪問的,這樣同樣不允許進入。

  這時我們如果在代碼里面去實現這些功能的話,可能上面的每一個功能,我們都去寫一個SQL語句去判斷,根據每一個SQL語句執行的結果去提供給用戶不同的顯顯示信息,無疑會增加數據庫及網絡的吞吐量。

  而我們把上面的業務放在一個存儲過程里面,把這些語句放在一組,然后通過每種情況傳出一個輸出參數,然后在程序部分只面要對這些接收參數進行分別的判斷,這樣程序部分只需要提交一次,就會大大的增加了應用程序的性能。存儲過程的優點顯而可見。

  2) 我們再看一種業務這樣的需求,現在對已經畢業的學生的信息進行批量的上報,這些學生信息原來是存儲在一種表中,上報過后就會存儲在另一張表中,我們先通過查詢把所有在學校里面這些畢業的學生信息查出來,然后采取批量上傳的方式,這是我們可能會在應用程序中如下操作:

  在程序中建立一個循環,如

  for (i=0;iNT.COUNT,I++)< p>

  {

  //此部分是把選取列表中對應的每個學生的ID都進行傳送到存儲過程中。

  }

  這樣產生的一種結果就是,如果批量選取了一百個學生,就會按學生選取的ID一次次的傳送到存儲過程中一百次,這樣數據庫頻繁的打開與關閉就會達到一百次,這樣的操作很可能就會引起服務器性能的低下,CPU很可能就會達到百分之百。

  而我們把上面的實現方法改造一下,我把們學生的ID存儲為一個字符串,按逗號進行串聯,不再以INT形式傳遞到存儲過程,而傳遞字符的形式,而在存儲過程編寫的時候,我們通過對這些字符串進行處理,再按逗號進行分隔,然后在里面進行循環的處理,這樣處理的速度就會非常快,和上面比較性能就有著巨大的提高。

  上面的兩個小應用可以看到,有時雖然實現了同樣的功能,但存儲過程的應用的優點是非常明顯的,但對性能的提高有時還需要更多的經驗,因為在存儲過程編寫的時候,有時候還需要考慮一些SQL運用的技能,像一些復雜的組合查詢,一些事務的運用,一些語句使用的規范,怎么樣避免盡量的少使用一些效率不高的語句,如not in等等,這需要我們仔細的分析軟件的業務,及平常在寫存儲過程的過程中就要積累這些良好的習慣。

熱詞搜索:

上一篇:路由選擇協議與VLSM子網設計
下一篇:安全課堂:Linux系統下防火墻設置方法介紹

分享到: 收藏
主站蜘蛛池模板: 聊斋在线观看| 母乳妈妈忌口胀气食物| 10元人民币图片| 福音电影| 玛姬·格蕾斯| 幸福年民乐合奏曲简谱| dj舞曲劲爆歌曲大全| 成龙电影大全免费全集| 汤唯惊艳写真大片| 健康中国科普先行直播回放| 砌体工程质量验收规范gb50203---2011 | 不可饶恕 电影| 刑事侦缉档案2剧情介绍| 龚子棋| 验光单子的数据怎么看| 杨门女将演员表| 大秦帝国第一部免费观看46集| 部队飞行安全大讨论心得体会| 左雯璐| 天地无伦| 妻不可欺短剧结局| 看黄在线| 女生宿舍在线观看| 甜蜜宝贝电影| 行尸走肉第六季| 《一点》歌曲歌词| 巴霍巴利王:开端 2015 帕拉巴斯| 美女舌吻| 女生被艹在线观看| 拉雅| 小镇姑娘高清播放| 美女网站在线观看| 恩齐| 猎兽神兵免费全集在线观看高清版| 韩国女主播热舞视频| 久纱野水萌| 喜羊羊电影| 日本变态视频| 不可饶恕 电影| 大学英语精读4课后答案| 台州林毅|