原文:
儲存過程的使用,好像一直是乙個爭論。
我不傾向於盡可能使用儲存過程,是這麼認為的:
1. 執行速度: 大多數高階的資料庫系統都有statement cache的,所以編譯sql的花費沒什麼影響。但是執行儲存過程要比直接執行sql花費更多(檢查許可權等),所以對於很簡單的sql,儲存過程沒有什麼優勢。
2. 網路負荷:如果在儲存過程中沒有多次資料互動,那麼實際上網路傳輸量和直接sql是一樣的。
3. 團隊開發:很遺憾,比起成熟的ide,沒有什麼很好儲存過程的ide工具來支援,也就是說,這些必須手工完成。
4. 安全機制:對於傳統的c/s結構,連線資料庫的使用者可以不同,所以安全機制有用;但是在web的三層架構中,資料庫使用者不是給使用者用的,所以基本上,只有乙個使用者,擁有所有許可權(最多還有乙個開發使用者)。這個時候,安全機制有點多餘。
5. 使用者滿意:實際上這個只是要將訪問資料庫的介面統一,是用儲存過程,還是ejb,沒太大關係,也就是說,在三層結構中,單獨設計出乙個資料訪問層,同樣能實現這個目標。
6. 開發除錯:一樣由於ide的問題,儲存過程的開發除錯要比一般程式困難(老版本db2還只能用c寫儲存過程,更是乙個災難)。
7. 移植性:算了,這個不用提,反正一般的應用總是繫結某個資料庫的,不然就無法靠優化資料庫訪問來提高效能了。
8. 維護性:的確,儲存過程有些時候比程式容易維護,這是因為可以實時更新db端的儲存過程,但是在3層結構下,更新server端的資料訪問層一樣能實現這個目標,可惜現在很多平台不支援實時更新而已。
從上面可知道,儲存過程的使用不能有死規定(全用,或全不用),以前terminal - server, client-db的方式已經過時了,儲存過程很多優勢已經不明顯。
現在,我認為的原則是:所有資料訪問在應用層封裝為資料訪問層,在那裡,如果sql簡單的話,直接用sql;如果sql複雜,或者資料互動多且中間資料最後不會用到,使用儲存過程。其他憑經驗吧。
為什麼要用儲存過程
幾個去 ibm 面試的兄弟回來抱怨 去了好幾個不同的 ibm 專案組,幾乎每個面試官問到資料庫的時候都要問用沒用過儲存過程,煩人不?大家去面的程式設計師,又不是 dba,以前的專案都沒有用到儲存,不照樣執行的好好的?儲存過 的那麼重要嗎,它到底有什麼好處呢?筆者認為,儲存過程說白了就是一堆 sql ...
為什麼要用儲存過程
儲存過程說白了就是一堆 sql 的合併。中間加了點邏輯控制。但是儲存過程處理比較複雜的業務時比較實用。比如說,乙個複雜的資料操作。如果你在前台處理的話。可能會涉及到多次資料庫連線。但如果你用儲存過程的話。就只有一次。從響應時間上來說有優勢。也就是說儲存過程可以給我們帶來執行效率提高的好處。另外,程式...
為什麼要用 enable shared from
樓主 hma if you think you can,you can.panrainbow 憂鬱淡藍 於 tue nov 9 11 48 38 2010 提到 引入enable shared from this的原因是可以實現返回值為指向該類本身的 shared ptr,為什麼以this為拷貝構造...