MySql存儲過程—1、SQL存儲過程的基礎知識
在深入理解MySq之前,我們先理下一些簡單的問題
Q:什麼是存儲過程?(stored procedure)
A:是一段寫好的SQL代碼,特別的就是它是存在數據庫的目錄裡。所以外部程序可以直接調用數據庫裡面定義好的存儲過程,另外數據庫內部的觸發器(trigger)、或者其他存儲過程也可以調用它。
Q:存儲過程有什麼好處?有什麼壞處?
A: www.2cto.com
先看看好處吧:
1、首先在性能上的提高,比起通過應用程序發送sql語句給數據庫執行,讓數據庫自己內部執行存儲過程效率更高、速度更快(存儲過程將sql編譯好後存在數據庫目錄下);
2、存儲過程還減少了應用程序同服務器自己的信息交互頻率,可以想象在不是使用存儲過程的情況,應用程序需要發送多條sql指令給服務器,而使用存儲過程則只要一條調用存儲過程的語句,然後獲取需要的數據就ok了。
3、存儲過程重用性比較高,並且是透明的,因為保存在數據庫裡面所以對任何應用來說都可以使用。新的應用只需要調用相應的存儲過程就可以得到相應的數據服務。
4、存儲過程也是種安全的做法,數據庫管理員可以對那些沒有權限訪問數據庫中的表格的應用,給他們使用存儲過程的權限來獲得數據服務,可以看到這個時候這些存儲過程好像我們編程裡面的”接口“這個概念。對於安全性要求很高的系統,例如銀行,基本上常用的操作都是通過存儲過程或者函數來進行的,這樣完全對應用”隱藏“了表格。
當然也有壞處:
www.2cto.com
1、存儲過程會使得數據庫占用的系統資源加大(cpu、memory),數據庫畢竟主要用來做數據存取的,並不進行復雜的業務邏輯操作。
2、因為存儲過程依舊是sql,所以沒辦法像編程語言那樣寫出復雜業務邏輯對應的存儲過程。
3、存儲過程不容易進行調試。
4、存儲過程書寫及維護難度都比較大。
了解這些優缺點對我們權衡使用存儲過程有很大的幫助
作者 rdarda