亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

如何在應用程序中高效的使用存儲過程
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系統下防火墻設置方法介紹

分享到: 收藏