mysql存儲過程的缺點是什么

mysql存儲過程的缺點:1、存儲過程的構造使得開發(fā)具有復雜業(yè)務邏輯的存儲過程變得更加困難;2、很難調(diào)試存儲過程;3、開發(fā)和維護存儲過程不容易;4、由于存儲過程將應用程序綁定到數(shù)據(jù)庫上,因此使用存儲過程封裝業(yè)務邏輯將限制應用程序的可移植性。

mysql存儲過程的缺點是什么

本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

存儲過程介紹:

存儲過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫。用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。

1、存儲過程只在創(chuàng)造時進行編譯,以后每次執(zhí)行存儲過程都不需再重新編譯,而一般SQL 語句每執(zhí)行一次就編譯一次,所以使用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度。

2、當對數(shù)據(jù)庫進行復雜操作時(如對多個表進行Update,Insert,select,delete 時),可將此復雜操作用存儲過程封裝起來與數(shù)據(jù)庫提供的事務處理結合一起使用。

3、存儲過程可以重復使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量。

4、安全性高,可設定只有某個用戶才具有對指定存儲過程的使用權。

MySQL存儲過程的優(yōu)缺點

MySQL存儲過程的優(yōu)點

  • 通常存儲過程有助于提高應用程序的性能。當創(chuàng)建,存儲過程被編譯之后,就存儲在數(shù)據(jù)庫中。 但是,MySQL實現(xiàn)的存儲過程略有不同。 MySQL存儲過程按需編譯。 在編譯存儲過程之后,MySQL將其放入緩存中。 MySQL為每個連接維護自己的存儲過程高速緩存。 如果應用程序在單個連接中多次使用存儲過程,則使用編譯版本,否則存儲過程的工作方式類似于查詢。

  • 存儲過程有助于減少應用程序和數(shù)據(jù)庫服務器之間的流量,因為應用程序不必發(fā)送多個冗長的SQL語句,而只能發(fā)送存儲過程的名稱和參數(shù)。

  • 存儲的程序對任何應用程序都是可重用的和透明的。 存儲過程將數(shù)據(jù)庫接口暴露給所有應用程序,以便開發(fā)人員不必開發(fā)存儲過程中已支持的功能。

  • 存儲的程序是安全的。 數(shù)據(jù)庫管理員可以向訪問數(shù)據(jù)庫中存儲過程的應用程序授予適當?shù)臋嘞蓿幌蚧A數(shù)據(jù)庫表提供任何權限。

除了這些優(yōu)點之外,存儲過程有其自身的缺點,在數(shù)據(jù)庫中使用它們之前,應該注意這些缺點。

MySQL存儲過程的缺點

  • 如果使用大量存儲過程,那么使用這些存儲過程的每個連接的內(nèi)存使用量將會大大增加。 此外,如果您在存儲過程中過度使用大量邏輯操作,則CPU使用率也會增加,因為數(shù)據(jù)庫服務器的設計不當于邏輯運算。

  • 存儲過程的構造使得開發(fā)具有復雜業(yè)務邏輯的存儲過程變得更加困難。

  • 很難調(diào)試存儲過程。只有少數(shù)數(shù)據(jù)庫管理系統(tǒng)允許您調(diào)試存儲過程。不幸的是,MySQL不提供調(diào)試存儲過程的功能。

  • 開發(fā)和維護存儲過程并不容易。

  • 可移植性差:由于存儲過程將應用程序綁定到數(shù)據(jù)庫上,因此使用存儲過程封裝業(yè)務邏輯將限制應用程序的可移植性。

  • 重新編譯問題,因為后端代碼是運行前編譯的,如果帶有引用關系的對象發(fā)生改變時,受影響的存儲過程、包將需要重新編譯(不過也可以設置成運行時刻自動編譯)。

【相關推薦:mysql視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享