總結下使用儲存過程的優缺點
一、儲存過程優點
儲存過程是一組預先建立並用指定的名稱儲存在資料庫伺服器上的 sql 語句,將使用比較頻繁或者比較複雜的操作,預先用 sql 語句寫好並儲存起來,以後當需要資料庫提供相同的服務時,只需再次執行該儲存過程。
1.具有更好的效能
儲存過程是預編譯的,只在建立時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般 sql 語句每執行一次就編譯一次,因此使用儲存過程可以提高資料庫執行速度。
2.功能實現更加靈活
儲存過程中可以應用條件判斷和游標等語句,有很強的靈活性,可以直接呼叫資料庫的一些內建函式,完成複雜的判斷和較複雜的運算。
3.減少網路傳輸
複雜的業務邏輯需要多條 sql 語句,當客戶機和伺服器之間的操作很多時,將產生大量的網路傳輸。如果將這些操作放在乙個儲存過程中,那麼客戶機和伺服器之間的網路傳輸就會減少,降低了網路負載。
4.具有更好的安全性
(1)資料庫管理人員可以更好的進行許可權控制,儲存過程可以遮蔽對底層資料庫物件的直接訪問,使用 execute 許可權呼叫儲存過程,無需擁有訪問底層資料庫物件的顯式許可權。
(2)在通過網路呼叫過程時,只有對執行過程的呼叫是可見的。無法看到表和資料庫物件名稱,不能嵌入sql 語句,有助於避免 sql 注入攻擊。
二、儲存過程的弊端
1.架構不清晰,不夠物件導向
儲存過程不太適合物件導向的設計,無法採用物件導向的方式將業務邏輯進行封裝,業務邏輯在儲存層實現,增加了業務和儲存的耦合,**的可讀性也會降低,
2.開發和維護要求比較高
儲存過程的編寫直接依賴於開發人員,如果業務邏輯改動較多,需要頻繁直接運算元據庫,大量業務降維到資料庫,很多異常不能在**中捕獲,出現問題較難排查,需要資料庫管理人員的幫助。
3.可移植性差
過多的使用儲存過程會降低系統的移植性。在對儲存進行相關擴充套件時,可能會增加一些額外的工作。
三、總結
儲存過程與sql語句如何抉擇?
架構設計沒有絕對,只有在當前的場景下最合適的。
普通的專案開發中,不建議大量使用儲存過程,對比sql語句,儲存過程適用於業務邏輯複雜,比較耗時,同時請求量較少的操作,例如後台大批量查詢、定期更新等。
(1)當乙個事務涉及到多個sql語句時或者涉及到對多個表的操作時可以考慮應用儲存過程
(2)在乙個事務的完成需要很複雜的商業邏輯時可以考慮應用儲存過程
(3)比較複雜的統計和彙總可以考慮應用後台儲存過程
mysql儲存過程應用 MySQL儲存過程使用解析
mysql儲存過程 儲存過程 stored procedure 是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。目的是為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數 需要時 來呼叫執行。說白了就是資料庫 sql語言層面的 封裝與重...
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...