百度百科對存儲過程的定義java
存儲過程(Stored Procedure)是在大型數據庫系統中,一組爲了完成特定功能的SQL 語句集,它存儲在數據庫中,一次編譯後永久有效,用戶經過指定存儲過程的名字並給出參數(若是該存儲過程帶有參數)來執行它。存儲過程是數據庫中的一個重要對象。在數據量特別龐大的狀況下利用存儲過程能達到倍速的效率提高;sql
那麼關於開發當中是否使用存儲過程,一直以來都有不少爭論;數據庫
在《阿里巴巴java編碼規範》有這樣一條編輯器
關於這個,我我的在互聯網行業是贊同的;性能
首先,確實很難調試,若是把大量的業務寫在存儲過程,那麼調試閱讀起來是編碼
很痛苦的,試想一下,在幾百行的sql 裏面 ,你要一個個去理解它的意思;調試
有時候,你須要逐行去驗證對錯;再者你要增長功能 ,只能在繼續往上面堆sql,最後形成惡性循環;orm
至於移植,在不一樣的數據庫有些機制仍是略有不一樣的,仍是須要改sql;對象
因此在互聯網行業,通常是不提倡使用存儲過程的;blog
那麼有人會問存儲過程執行效率高啊,確實如此,可是爲了那麼一點點性能
犧牲開發效率和維護性就得不償失;何況效率性能的重點根本不在那麼一點點損耗;就像有人以爲原生的sql 效率高,拒絕orm 是同樣的;沒有注意到事情的本質;因噎廢食;
固然,事情有兩面性,有些行業,好比傳統的管理類系統,因爲需求變化大,
業務複雜,軟件產品化等客觀緣由,存儲過程就不失一個好的辦法,好比erp實施;不少時候都是懂點sql 的實施人員去作,而不是開發人員再去搗鼓代碼。