亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

存儲過程的優缺點

2024-07-21 02:52:12
字體:
來源:轉載
供稿:網友

為什么要用存儲過程

幾個去 IBM 面試的兄弟回來抱怨:去了好幾個不同的 IBM 項目組,幾乎每個面試官問到數據庫的時候都要問用沒用過存儲過程,煩人不?大家去面的程序員,又不是 DBA,以前的項目都沒有用到存儲,不照樣運行的好好的?

存儲過程真的那么重要嗎,它到底有什么好處呢?

筆者認為,存儲過程說白了就是一堆 SQL 的合并。中間加了點邏輯控制。

但是存儲過程處理比較復雜的業務時比較實用。比如說,一個復雜的數據操作。如果你在前臺處理的話??赡軙婕暗蕉啻螖祿爝B接。但如果你用存儲過程的話。就只有一次。從響應時間上來說有優勢。也就是說存儲過程可以給我們帶來運行效率提高的好處。另外,程序容易出現 BUG 不穩定,而存儲過程,只要數據庫不出現問題,基本上是不會出現什么問題的。也就是說從安全上講,使用了存儲過程的系統更加穩定。

數據量小的,或者和錢沒關系的項目不用存儲過程也可以正常運作。MySQL 的存儲過程還有待實際測試。如果是正式項目,建議你用 sql server 或Oracle 的存儲過程。數據與數據之間打交道的話,過程會比程序來的快的多。面試官問有沒有用存儲,實際上就是想知道前來面試的程序員到底做過數據量大的項目沒。如果是培訓出來的,或者小項目小公司出來的,對存儲肯定接觸的少了。

所以,要想進大公司,沒有豐富存儲過程經驗,是不行的。

那么什么時候才可以用存儲?對于數據量不是很大以及業務處理不是很復雜的小項目就無需要了么?錯。存儲過程不僅僅適用于大型項目,對于中小型項目,使用存儲過程也是非常有必要的。其威力和優勢主要體現在:  1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。  2.當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。  3.存儲過程可以重復使用,可減少數據庫開發人員的工作量。  4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/defonds/archive/2009/07/15/4349922.aspx

存儲過程的使用,好像一直是一個爭論。      我不傾向于盡可能使用存儲過程,是這么認為的:       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復雜,或者數據交互多且中間數據最后不會用到,使用存儲過程。其他憑經驗吧。

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zy1691/archive/2009/01/09/3742780.aspx

存儲過程是由一些SQL語句和控制語句組成的被封裝起來的過程,它駐留在數據庫中,可以被客戶應用程序調用,也可以從另一個過程或觸發器調用。它的參數可以被傳遞和返回。與應用程序中的函數過程類似,存儲過程可以通過名字來調用,而且它們同樣有輸入參數和輸出參數。  根據返回值類型的不同,我們可以將存儲過程分為三類:返回記錄集的存儲過程,返回數值的存儲過程(也可以稱為標量存儲過程),以及行為存儲過程。顧名思義,返回記錄集的存儲過程的執行結果是一個記錄集,典型的例子是從數據庫中檢索出符合某一個或幾個條件的記錄;返回數值的存儲過程執行完以后返回一個值,例如在數據庫中執行一個有返回值的函數或命令;最后,行為存儲過程僅僅是用來實現數據庫的某個功能,而沒有返回值,例如在數據庫中的更新和刪除操作?! ∈褂么鎯^程的好處   相對于直接使用SQL語句,在應用程序中直接調用存儲過程有以下好處:   (1)減少網絡通信量。調用一個行數不多的存儲過程與直接調用SQL語句的網絡通信量可能不會有很大的差別,可是如果存儲過程包含上百行SQL語句,那么其性能絕對比一條一條的調用SQL語句要高得多?! ?2)執行速度更快。有兩個原因:首先,在存儲過程創建的時候,數據庫已經對其進行了一次解析和優化。其次,存儲過程一旦執行,在內存中就會保留一份這個存儲過程,這樣下次再執行同樣的存儲過程時,可以從內存中直接調用?! ?3)更強的適應性:由于存儲過程對數據庫的訪問是通過存儲過程來進行的,因此數據庫開發人員可以在不改動存儲過程接口的情況下對數據庫進行任何改動,而這些改動不會對應用程序造成影響?! ?4) 布式工作:應用程序和數據庫的編碼工作可以分別獨立進行,而不會相互壓制。 優點: 1.由于應用程序隨著時間推移會不斷更改,增刪功能,T-SQL過程代碼會變得更復雜,StoredPRocedure為封裝此代碼提供了一個替換位置。 2.執行計劃(存儲過程在首次運行時將被編譯,這將產生一個執行計劃-- 實際上是 Microsoft SQL Server為在存儲過程中獲取由 T-SQL 指定的結果而必須采取的步驟的記錄。)緩存改善性能。........但sql server新版本,執行計劃已針對所有 T-SQL 批處理進行了緩存,而不管它們是否在存儲過程中,所以沒比較優勢了。 3.存儲過程可以用于降低網絡流量,存儲過程代碼直接存儲于數據庫中,所以不會產生大量T-sql語句的代碼流量。 4.使用存儲過程使您能夠增強對執行計劃的重復使用,由此可以通過使用遠程過程調用 (RPC) 處理服務器上的存儲過程而提高性能。RPC 封裝參數和調用服務器端過程的方式使引擎能夠輕松地找到匹配的執行計劃,并只需插入更新的參數值。5.可維護性高,更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。 6.代碼精簡一致,一個存儲過程可以用于應用程序代碼的不同位置。 7.更好的版本控制,通過使用 Microsoft Visual SourceSafe 或某個其他源代碼控制工具,您可以輕松地恢復到或引用舊版本的存儲過程。8.增強安全性: a、通過向用戶授予對存儲過程(而不是基于表)的訪問權限,它們可以提供對特定數據的訪問; b、提高代碼安全,防止 SQL注入(但未徹底解決,例如,將數據操作語言--DML,附加到輸入參數); c、SqlParameter 類指定存儲過程參數的數據類型,作為深層次防御性策略的一部分,可以驗證用戶提供的值類型(但也不是萬無一失,還是應該傳遞至數據庫前得到附加驗證)。缺點: 1.如果更改范圍大到需要對輸入存儲過程的參數進行更改,或者要更改由其返回的數據,則您仍需要更新程序集中的代碼以添加參數、更新 GetValue() 調用,等等,這時候估計比較繁瑣了。2.可移植性差 由于存儲過程將應用程序綁定到 SQL Server,因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性。如果應用程序的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定于 RDBMS 的中間層中可能是一個更佳的選擇。區別一,存儲過程保存在數據庫里面,存儲過程可以被連接此數據庫的所有程序設計語言和程序使用,自定義函數不能。 區別二,存儲過程可以有數據庫管理軟件修改,使得多層結構程序調整系統邏輯時,并不需要編譯和分發程序。 區別三,存儲過程執行中,不會引起網絡流量,不占用程序服務器的內存和CPU資源。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91av在线| 久久精品99久久香蕉国产色戒| 国产精品扒开腿做爽爽爽男男| 国产在线拍偷自揄拍精品| 国产高清在线不卡| 久久久免费在线观看| 国产精品女主播视频| 日韩高清人体午夜| 中文字幕在线看视频国产欧美在线看完整| 亚洲欧美日韩在线一区| 亚洲美女在线看| 亚洲国内精品视频| 亚洲人午夜精品免费| 欧美日韩另类在线| 欧美一区二区影院| 亚洲女人初尝黑人巨大| 日韩精品亚洲精品| 色综合视频一区中文字幕| 日韩av影视在线| 精品亚洲国产成av人片传媒| 国产亚洲成av人片在线观看桃| 久久亚洲一区二区三区四区五区高| 欧美国产日韩一区二区| 精品福利樱桃av导航| 国产成+人+综合+亚洲欧美丁香花| 国产亚洲精品久久久久动| 国产视频丨精品|在线观看| 国产精品视频中文字幕91| 亚洲第一精品久久忘忧草社区| 永久免费毛片在线播放不卡| 国产精品人成电影| 亚洲综合成人婷婷小说| 91久久精品国产91久久| 精品国产精品三级精品av网址| 97视频在线观看亚洲| 久久精品欧美视频| 91在线直播亚洲| 亚洲va欧美va国产综合剧情| 久久久精品免费| 成人h视频在线| 欧美成人午夜免费视在线看片| 国产一区二区三区直播精品电影| 欧美日韩国产精品专区| 91亚洲精品视频| 亚洲v日韩v综合v精品v| 伊人久久男人天堂| 欧美中文字幕在线观看| 亚洲国产一区自拍| 精品视频偷偷看在线观看| 亚洲欧美制服另类日韩| 北条麻妃99精品青青久久| 欧美洲成人男女午夜视频| 永久555www成人免费| 精品视频一区在线视频| 欧美视频在线观看免费| 国产精品你懂得| 欧美日韩一区二区三区在线免费观看| 91国产精品电影| 日韩国产欧美精品在线| 国产精品第七十二页| 国产在线播放不卡| 福利一区视频在线观看| 91久久国产精品| 91网站在线免费观看| 最新中文字幕亚洲| 欧美乱人伦中文字幕在线| 性色av一区二区三区免费| 色阁综合伊人av| 91探花福利精品国产自产在线| 精品国内自产拍在线观看| 亚洲性生活视频在线观看| 中文字幕日韩欧美| 国产一区私人高清影院| 日韩欧美亚洲范冰冰与中字| 深夜福利日韩在线看| 亚洲精品97久久| 亚洲自拍偷拍视频| 国产欧美va欧美va香蕉在| 亚洲精品日韩av| 亚洲精品视频免费| 亚洲女人天堂视频| 欧美日韩精品中文字幕| 欧美极品少妇xxxxⅹ免费视频| 久久免费视频网站| 在线观看欧美日韩| 欧美夫妻性生活视频| 国产欧美一区二区三区久久人妖| 成人免费激情视频| 日韩欧美在线免费| 日韩av免费在线看| 欧美日韩一二三四五区| 91网站免费观看| 欧美成人免费大片| 日韩一区二区三区xxxx| 亚洲日本成人女熟在线观看| 欧美最猛性xxxxx亚洲精品| 日韩最新在线视频| 欧美丝袜一区二区三区| 色伦专区97中文字幕| 亚洲一区二区三区视频播放| 中文字幕精品一区久久久久| 4438全国成人免费| 九九热99久久久国产盗摄| 日韩av影片在线观看| 亚洲欧美日本精品| 国产一区二区三区四区福利| 国产91在线播放| 欧美精品中文字幕一区| 96pao国产成视频永久免费| 精品国产欧美成人夜夜嗨| 久久久久久国产免费| 久久av在线播放| 91av视频在线免费观看| 欧美大片欧美激情性色a∨久久| 欧美日韩另类字幕中文| 亚洲欧美激情精品一区二区| 欧美激情精品久久久久久黑人| 国产视频精品xxxx| 国产精品久久激情| 成人黄在线观看| 亚洲黄色av女优在线观看| 国产精国产精品| 琪琪亚洲精品午夜在线| xxxxx91麻豆| 亚洲天堂免费在线| 国产精品精品国产| 国产欧美日韩中文字幕| 久久不射热爱视频精品| 81精品国产乱码久久久久久| 亚洲成人精品视频| 亚洲男人7777| 久久久国产精品免费| 91精品久久久久久久久久久| 亚洲欧美色婷婷| 日韩高清有码在线| 性欧美亚洲xxxx乳在线观看| 欧美激情精品久久久久久变态| 亚洲午夜色婷婷在线| 国产丝袜一区二区三区| 亚洲精品久久久久中文字幕二区| 精品欧美aⅴ在线网站| 精品久久久香蕉免费精品视频| 亚洲女人被黑人巨大进入| 欧美在线日韩在线| 欧美激情视频在线| 色综合天天综合网国产成人网| 日韩美女视频免费在线观看| 国产日韩在线精品av| 亚洲女同精品视频| 国产欧洲精品视频| 欧美日韩美女视频| 伊人成人开心激情综合网| 国产精品免费久久久久影院| 欧美韩日一区二区| 黄网站色欧美视频| 欧美有码在线视频| 日韩中文字幕视频在线| 亚洲夜晚福利在线观看| 中文字幕av一区二区| 成人免费激情视频| 亚洲精品美女在线| 国产婷婷97碰碰久久人人蜜臀| 国产精品久久久久久久美男| 欧美中文在线观看|