MySQL 存儲(chǔ)過程 優(yōu)點(diǎn)和缺點(diǎn)有哪些?
存儲(chǔ)過程的優(yōu)點(diǎn)主要包括以下幾點(diǎn):
第一點(diǎn),性能提高。這是相對(duì)于不適用存儲(chǔ)過程來說的,因?yàn)榇鎯?chǔ)過程在創(chuàng)建的時(shí)候就編譯好了,而后每次調(diào)用都不會(huì)再次編譯,這相對(duì)于傳統(tǒng)的SQL語句中每次調(diào)用都需要編譯的情況來說,性能提高了何止一點(diǎn)兩點(diǎn)。
第二點(diǎn),重用性強(qiáng)。存儲(chǔ)過程使用名字即可使用,也就是傳說中的“一次編寫,隨便調(diào)用”。這樣不僅提高了重用性,還減少了出錯(cuò)的幾率,也會(huì)加快開發(fā)速度,可以說是一件非常好的事情。
第三點(diǎn),減少網(wǎng)絡(luò)流量。這一點(diǎn)對(duì)于小數(shù)據(jù)量的時(shí)候一般體現(xiàn)不出來,那么當(dāng)數(shù)據(jù)量較大的時(shí)候,我們會(huì)發(fā)現(xiàn)由于使用存儲(chǔ)過程比使用SQL語句會(huì)使用更少的字節(jié)數(shù),因此它會(huì)降低傳輸?shù)臄?shù)據(jù)量。
第四點(diǎn),安全性提高。由于存儲(chǔ)過程也可以使用權(quán)限控制,而且參數(shù)化的存儲(chǔ)過程可以防止SQL注入攻擊,也在一定程度上保證了安全性。
第五點(diǎn),靈活性增強(qiáng)。由于存儲(chǔ)過程可以使用流程控制語句來編寫,導(dǎo)致它有著很強(qiáng)的靈活性,可以根據(jù)實(shí)際情況來執(zhí)行不同的SQL語句,而不是只能單純的簡單的執(zhí)行命令。而且該存儲(chǔ)過程還可以修改其邏輯而其他部分不用改變,也就是說,我們的表的結(jié)構(gòu)改變了,我們只需要修改相應(yīng)的存儲(chǔ)過程即可,我們的Java或者PHP等程序不需要改變。
第六點(diǎn),當(dāng)業(yè)務(wù)復(fù)雜的時(shí)候,存儲(chǔ)過程會(huì)減少工作量,為什么呢,原因很簡單,如果我們不適用存儲(chǔ)過程,那么就會(huì)導(dǎo)致我們先從數(shù)據(jù)庫中取出來數(shù)據(jù),然后經(jīng)過計(jì)算,再放入到數(shù)據(jù)庫中,這個(gè)開銷還是蠻大的,這中間的開銷包括我們的Java或者PHP程序連接數(shù)據(jù)庫獲取結(jié)果集等若干操作,如果我們使用了存儲(chǔ)過程,那么就沒有那么多事了,直接在mysql內(nèi)就搞定了。
缺點(diǎn):
第一點(diǎn),工作量加大。這里并不是說我們把程序該做的事讓mysql去做不好,而是mysql本身并沒有很像樣的IDE來開發(fā)我們的存儲(chǔ)過程,我們很多時(shí)候還是需要手寫,這樣就會(huì)比較麻煩,而且存儲(chǔ)過程的調(diào)試也是一個(gè)問題,沒有很像樣的調(diào)試工具。
第二點(diǎn),優(yōu)勢(shì)不明顯。運(yùn)行速度上,對(duì)于大多數(shù)的語句緩存來說,編譯sql的時(shí)間開銷并不是很大,但是執(zhí)行存儲(chǔ)過程還需要檢查權(quán)限等一些其他開銷,所以,對(duì)于很簡單的sql,存儲(chǔ)過程并沒有很大優(yōu)勢(shì)。
第三點(diǎn),贅余功能。對(duì)web程序來說,我們連接數(shù)據(jù)庫的用戶往往就是同一個(gè),不需要太多的安全機(jī)制,所以,對(duì)于安全上的檢測(cè)看上去很好,實(shí)際上優(yōu)點(diǎn)多余。
第四點(diǎn),小型程序完全無用。對(duì)于小型web應(yīng)用來說,它的使用價(jià)值就更小了,反而會(huì)拖累開發(fā)進(jìn)度。
第五點(diǎn),對(duì)于運(yùn)維上。當(dāng)我們的程序要更換數(shù)據(jù)庫的時(shí)候,它的移植性相對(duì)于不適用存儲(chǔ)過程要復(fù)雜一些,對(duì)于維護(hù)上,由于是在db端,因此比server端的程序更好維護(hù)一些。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。