mysql存儲過程已被視為應(yīng)用程序通過使用編碼方法或“過程”訪問和操作數(shù)據(jù)庫信息的事實(shí)標(biāo)準(zhǔn)。這主要是由于它們?yōu)殚_發(fā)人員提供的:將SQL的基于集合的功能與代碼開發(fā)的迭代和條件處理控制相結(jié)合的機(jī)會。開發(fā)人員對此非常高興;最后,開發(fā)人員可以利用以下優(yōu)勢,而不是編寫內(nèi)聯(lián)SQL然后嘗試從代碼中操作數(shù)據(jù):
一、熟悉的編碼原則
1、迭代循環(huán)
2、條件句
3、方法調(diào)用(存儲過程本身被構(gòu)建并且類似地被稱為方法)
二、一次一地處理
1、現(xiàn)在,SQL 代碼的各個部分可以封裝到命名方法塊中,而不是將內(nèi)聯(lián) SQL 代碼分布在整個應(yīng)用程序中,這些方法都可以在一個位置2、所有復(fù)雜的數(shù)據(jù)處理現(xiàn)在都可以在服務(wù)器上執(zhí)行,允(數(shù)據(jù)庫的“存儲過程”文件夾)中輕松識別和訪問。
當(dāng)然,僅僅因?yàn)槟承〇|西很流行并不總是意味著它在所有情況下都是最好的工具。Stored Procedures的效率、功效和實(shí)用性,就像所有編程語言和平臺的實(shí)現(xiàn)一樣,都取決于客戶端的需求和應(yīng)用程序的后續(xù)架構(gòu)。
下面,小編就給大家分析下mysql存儲過程的優(yōu)點(diǎn)與缺點(diǎn)。
一、使用mysql存儲過程的優(yōu)點(diǎn)
存儲過程如此流行并得到如此廣泛的使用,因此人們對關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS)抱有期望,以至于MySQL最終屈服于開發(fā)人員的同行壓力,并在其非常流行的開源數(shù)據(jù)庫中添加了利用存儲過程的能力。
1、可維護(hù)性:由于腳本位于同一個位置,因此根據(jù)模式更改更新和跟蹤依賴關(guān)系變得更加容易。
2、測試:可以獨(dú)立于應(yīng)用程序進(jìn)行測試。
3、業(yè)務(wù)規(guī)則隔離:將存儲過程放在一個位置意味著不會混淆將業(yè)務(wù)規(guī)則分布在應(yīng)用程序中可能不同的代碼文件上。
4、速度/優(yōu)化:存儲過程緩存在服務(wù)器上;無需運(yùn)行應(yīng)用程序即可輕松查看流程的執(zhí)行計(jì)劃。
5、基于集合的處理的利用:SQL的強(qiáng)大之處在于它能夠快速高效地對大量數(shù)據(jù)執(zhí)行基于集合的處理;編碼等價物通常是迭代循環(huán),通常要慢得多。
6、安全:通過數(shù)據(jù)庫中定義的角色限制對表的直接訪問;為底層數(shù)據(jù)結(jié)構(gòu)提供一個“接口”,以便屏蔽所有實(shí)現(xiàn)甚至數(shù)據(jù)本身;僅保護(hù)數(shù)據(jù)和訪問它的代碼比在應(yīng)用程序代碼本身中應(yīng)用該安全性更容易。
二、使用mysql存儲過程的缺點(diǎn)
存儲過程肯定有一些缺點(diǎn),使它們無法成為應(yīng)用程序數(shù)據(jù)庫訪問的一站式解決方案。
1、有限的編碼功能:存儲過程代碼不如應(yīng)用程序代碼健壯,特別是在循環(huán)方面(更不用說迭代構(gòu)造,如游標(biāo),速度慢且處理器密集)。
2、可移植性:利用用于創(chuàng)建它們的RDBMS的復(fù)雜核心功能的復(fù)雜存儲過程并不總是移植到同一數(shù)據(jù)庫的升級版本。如果從一種數(shù)據(jù)庫類型 (Oracle) 遷移到另一種數(shù)據(jù)庫類型 (MS SQL Server),則尤其如此。
3、測試:直到運(yùn)行時才生成處理存儲過程的任何數(shù)據(jù)錯誤。
4、業(yè)務(wù)規(guī)則的位置:由于SP不容易分組/封裝在單個文件中,這也意味著業(yè)務(wù)規(guī)則分布在不同的存儲過程中。應(yīng)用程序代碼架構(gòu)有助于確保業(yè)務(wù)規(guī)則封裝在單個對象中。普遍認(rèn)為業(yè)務(wù)規(guī)則/邏輯不應(yīng)放在數(shù)據(jù)層中
5、基于集合的處理的利用
維護(hù)不夠復(fù)雜的存儲過程會導(dǎo)致過多的開銷。因此,普遍的共識是簡單的 SELECT 語句不應(yīng)綁定到存儲過程,而應(yīng)作為內(nèi)聯(lián)SQL實(shí)現(xiàn)。
6、成本
根據(jù)我們的公司結(jié)構(gòu)和開發(fā)關(guān)注點(diǎn)分離,存儲過程開發(fā)可能需要專門的數(shù)據(jù)庫開發(fā)人員。有些企業(yè)根本不允許開發(fā)人員訪問數(shù)據(jù)庫,而是需要一個單獨(dú)的DBA。這將自動產(chǎn)生額外費(fèi)用。一些公司認(rèn)為(有時是真的,但并非總是如此)DBA比應(yīng)用程序開發(fā)人員更像是SQL專家,因此會編寫更好的存儲過程。在這種情況下,需要DBA形式的額外開發(fā)人員。
以上是mysql存儲過程的優(yōu)點(diǎn)與缺點(diǎn)的介紹。希望能幫助到大家參考!
審核編輯:湯梓紅
-
存儲
+關(guān)注
關(guān)注
13文章
4897瀏覽量
90313 -
SQL
+關(guān)注
關(guān)注
1文章
807瀏覽量
46964 -
代碼
+關(guān)注
關(guān)注
30文章
4977瀏覽量
74420 -
MySQL
+關(guān)注
關(guān)注
1文章
931瀏覽量
29777
發(fā)布評論請先 登錄
恒訊科技解析:如何安裝MySQL并創(chuàng)建數(shù)據(jù)庫
中心管式光纜有哪些優(yōu)點(diǎn)和缺點(diǎn)
工業(yè)數(shù)據(jù)中臺支持接入MySQL數(shù)據(jù)庫嗎
不同類型的電能質(zhì)量在線監(jiān)測裝置數(shù)據(jù)存儲方式有哪些優(yōu)缺點(diǎn)?
工業(yè)級SLC SD NAND存儲的優(yōu)缺點(diǎn)
五大電磁頻譜管理監(jiān)測系統(tǒng)軟件:有哪些優(yōu)點(diǎn)和缺點(diǎn)
mysql數(shù)據(jù)恢復(fù)—mysql數(shù)據(jù)庫表被truncate的數(shù)據(jù)恢復(fù)案例
五大海上安全事件應(yīng)急處置系統(tǒng):有哪些優(yōu)點(diǎn)和缺點(diǎn)
CentOS 7下MySQL 8雙主熱備高可用架構(gòu)全解
MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南
MySQL數(shù)據(jù)備份與恢復(fù)策略
企業(yè)級MySQL數(shù)據(jù)庫管理指南
憶聯(lián) Docker+MySQL 流控方案:打造安全高效存儲底座,釋放 AI 極致性能
mysql存儲過程的優(yōu)點(diǎn)與缺點(diǎn)
評論