華文網

要搞明白存儲過程是個什麼東西,才能知道他是不是個好東西!

有如鵬網網友問:

楊老師,請教您個問題。大量的使用存儲過程對系統會有什麼影響嗎?比如連最簡單的增刪改都是用存儲過程。

我的回復:

一定要搞明白為什麼要有“存儲過程”這個東西。

如果我們使用程式訪問資料庫(比如java中的jdbc、.net中的ado.net),正常情況是程式連接資料庫伺服器,然後向資料庫伺服器發送執行sql語句。

因為程式和資料庫伺服器之間的sql執行的過程其實就是網路通訊的過程,而網路通訊是比較慢的。如果一個業務操作要執行很多條sql語句或者執行一個select查詢,遍歷查詢結果的時候又要執行其他sql語句進行其他操作的時候,在程式和資料庫伺服器之間就會頻繁的進行網路交互,這樣資料庫伺服器的壓力會比較大,而且速度慢。

這時候如果把這些業務邏輯寫到一個存儲過程,由於存儲過程是運行在資料庫伺服器內的,這樣只要程式向資料庫伺服器請求一次“運行某某存儲過程”,剩下的就是在資料庫伺服器內部執行了,因此運行速度會快一些,而且併發壓力會小一些。

明白了“為什麼要有存儲過程”之後,就很容易回答你的問題了“最簡單的增刪改都是用存儲過程”這個就沒必要了。

另外,現在業界的共識是“盡可能的不用存儲過程”,因為存儲過程在不同資料庫中的語法是不一樣的,跨資料庫移植很麻煩,還有存儲過程很難和專案之間完美的進行源碼版本管理,因此除了在一些極特殊的情況下,否則不要使用存儲過程。