mysql存儲過程已被視為應用程序通過使用編碼方法或“過程”訪問和操作數據庫信息的事實標準。這主要是由于它們為開發人員提供的:將SQL的基于集合的功能與代碼開發的迭代和條件處理控制相結合的機會。開發人員對此非常高興;最后,開發人員可以利用以下優勢,而不是編寫內聯SQL然后嘗試從代碼中操作數據:
一、熟悉的編碼原則
1、迭代循環
2、條件句
3、方法調用(存儲過程本身被構建并且類似地被稱為方法)
二、一次一地處理
1、現在,SQL 代碼的各個部分可以封裝到命名方法塊中,而不是將內聯 SQL 代碼分布在整個應用程序中,這些方法都可以在一個位置2、所有復雜的數據處理現在都可以在服務器上執行,允(數據庫的“存儲過程”文件夾)中輕松識別和訪問。
當然,僅僅因為某些東西很流行并不總是意味著它在所有情況下都是最好的工具。Stored Procedures的效率、功效和實用性,就像所有編程語言和平臺的實現一樣,都取決于客戶端的需求和應用程序的后續架構。
下面,小編就給大家分析下mysql存儲過程的優點與缺點。
一、使用mysql存儲過程的優點
存儲過程如此流行并得到如此廣泛的使用,因此人們對關系數據庫管理系統 (RDBMS)抱有期望,以至于MySQL最終屈服于開發人員的同行壓力,并在其非常流行的開源數據庫中添加了利用存儲過程的能力。
1、可維護性:由于腳本位于同一個位置,因此根據模式更改更新和跟蹤依賴關系變得更加容易。
2、測試:可以獨立于應用程序進行測試。
3、業務規則隔離:將存儲過程放在一個位置意味著不會混淆將業務規則分布在應用程序中可能不同的代碼文件上。
4、速度/優化:存儲過程緩存在服務器上;無需運行應用程序即可輕松查看流程的執行計劃。
5、基于集合的處理的利用:SQL的強大之處在于它能夠快速高效地對大量數據執行基于集合的處理;編碼等價物通常是迭代循環,通常要慢得多。
6、安全:通過數據庫中定義的角色限制對表的直接訪問;為底層數據結構提供一個“接口”,以便屏蔽所有實現甚至數據本身;僅保護數據和訪問它的代碼比在應用程序代碼本身中應用該安全性更容易。
二、使用mysql存儲過程的缺點
存儲過程肯定有一些缺點,使它們無法成為應用程序數據庫訪問的一站式解決方案。
1、有限的編碼功能:存儲過程代碼不如應用程序代碼健壯,特別是在循環方面(更不用說迭代構造,如游標,速度慢且處理器密集)。
2、可移植性:利用用于創建它們的RDBMS的復雜核心功能的復雜存儲過程并不總是移植到同一數據庫的升級版本。如果從一種數據庫類型 (Oracle) 遷移到另一種數據庫類型 (MS SQL Server),則尤其如此。
3、測試:直到運行時才生成處理存儲過程的任何數據錯誤。
4、業務規則的位置:由于SP不容易分組/封裝在單個文件中,這也意味著業務規則分布在不同的存儲過程中。應用程序代碼架構有助于確保業務規則封裝在單個對象中。普遍認為業務規則/邏輯不應放在數據層中
5、基于集合的處理的利用
維護不夠復雜的存儲過程會導致過多的開銷。因此,普遍的共識是簡單的 SELECT 語句不應綁定到存儲過程,而應作為內聯SQL實現。
6、成本
根據我們的公司結構和開發關注點分離,存儲過程開發可能需要專門的數據庫開發人員。有些企業根本不允許開發人員訪問數據庫,而是需要一個單獨的DBA。這將自動產生額外費用。一些公司認為(有時是真的,但并非總是如此)DBA比應用程序開發人員更像是SQL專家,因此會編寫更好的存儲過程。在這種情況下,需要DBA形式的額外開發人員。
以上是mysql存儲過程的優點與缺點的介紹。希望能幫助到大家參考!
審核編輯:湯梓紅
-
存儲
+關注
關注
13文章
4296瀏覽量
85800 -
SQL
+關注
關注
1文章
762瀏覽量
44117 -
代碼
+關注
關注
30文章
4779瀏覽量
68524 -
MySQL
+關注
關注
1文章
804瀏覽量
26531
發布評論請先 登錄
相關推薦
評論