熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

存儲過程優缺點分析

2013-11-23 21:04:55  來源: MySQL 

  存儲過程的優缺點 

存儲過程優點 
由於應用程序隨著時間推移會不斷更改增刪功能T-SQL過程代碼會變得更復雜StoredProcedure為封裝此代碼提供了一個替換位置 

執行計劃(存儲過程在首次運行時將被編譯這將產生一個執行計劃-- 實際上是 Microsoft SQL Server為在存儲過程中獲取由 TSQL 指定的結果而必須采取的步驟的記錄)緩存改善性能 
但sql server新版本執行計劃已針對所有 TSQL 批處理進行了緩存而不管它們是否在存儲過程中所以沒比較優勢了 

存儲過程可以用於降低網絡流量存儲過程代碼直接存儲於數據庫中所以不會產生大量Tsql語句的代碼流量 

使用存儲過程使您能夠增強對執行計劃的重復使用由此可以通過使用遠程過程調用 (RPC) 處理服務器上的存儲過程而提高性能RPC 封裝參數和調用服務器端過程的方式使引擎能夠輕松地找到匹配的執行計劃並只需插入更新的參數值 

可維護性高更新存儲過程通常比更改測試以及重新部署程序集需要較少的時間和精力 

代碼精簡一致一個存儲過程可以用於應用程序代碼的不同位置 

更好的版本控制通過使用 Microsoft Visual SourceSafe 或某個其他源代碼控制工具您可以輕松地恢復到或引用舊版本的存儲過程 

增強安全性 
a通過向用戶授予對存儲過程(而不是基於表)的訪問權限它們可以提供對特定數據的訪問 
b提高代碼安全防止 SQL注入(但未徹底解決例如將數據操作語言--DML附加到輸入參數) 
cSqlParameter 類指定存儲過程參數的數據類型作為深層次防御性策略的一部分可以驗證用戶提供的值類型(但也不是萬無一失還是應該傳遞至數據庫前得到附加驗證) 

存儲過程缺點 

如果更改范圍大到需要對輸入存儲過程的參數進行更改或者要更改由其返回的數據則您仍需要更新程序集中的代碼以添加參數更新 GetValue() 調用等等這時候估計比較繁瑣了 

可移植性差 

由於存儲過程將應用程序綁定到 SQL Server因此使用存儲過程封裝業務邏輯將限制應用程序的可移植性如果應用程序的可移植性在您的環境中非常重要則將業務邏輯封裝在不特定於 RDBMS 的中間層中可能是一個更佳的選擇 

大量采用存儲過程進行業務邏輯的開發致命的缺點是很多存儲過程不支持面向對象的設計無法采用面向對象的方式將業務邏輯進行封裝從而無法形成通用的可支持復用的業務邏輯框架 

代碼可讀性差相當難維護


From:http://tw.wingwit.com/Article/program/MySQL/201311/29549.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.