到底該不該使用存儲過程


背景

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

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

爭論

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

在《阿里巴巴java編碼規范》有這樣一條

 

 

 

互聯網人看法

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

 

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

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

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

 

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

 

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

 

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

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

事有兩面性

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM