到底該不該使用存儲過程

dotNET跨平臺 2022-01-07 05:32:16 阅读数:906

到底 使用

百度百科對存儲過程的定義

存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,它存儲在數據庫中,一次編譯後永久有效,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。在數據量特別龐大的情况下利用存儲過程能達到倍速的效率提昇;

那麼關於開發當中是否使用存儲過程,一直以來都有很多爭論;

在《阿裏巴巴java編碼規範》有這樣一條

36a2a2740f7bd48602af95b3ae3e6449.png

關於這個,我個人在互聯網行業是贊同的;

首先,確實很難調試,如果把大量的業務寫在存儲過程,那麼調試閱讀起來是

很痛苦的,試想一下,在幾百行的sql 裏面 ,你要一個個去理解它的意思;

有時候,你需要逐行去驗證對錯;再者你要增加功能 ,只能在繼續往上面堆sql,最後造成惡性循環;

至於移植,在不同的數據庫有些機制還是略有不同的,還是需要改sql;

所以在互聯網行業,一般是不提倡使用存儲過程的;

那麼有人會問存儲過程執行效率高啊,確實如此,但是為了那麼一點點性能

犧牲開發效率和維護性就得不償失;况且效率性能的重點根本不在那麼一點點損耗;就像有人覺得原生的sql 效率高,拒絕orm 是一樣的;沒有注意到事情的本質;因噎廢食;

當然,事情有兩面性,有些行業,比如傳統的管理類系統,由於需求變化大,

業務複雜,軟件產品化等客觀原因,存儲過程就不失一個好的辦法,比如erp實施;很多時候都是懂點sql 的實施人員去做,而不是開發人員再去搗鼓代碼。

版权声明:本文为[dotNET跨平臺]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201070532155895.html