亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在服務器端的代碼中寫sql還是使用存儲過程?

在服務器端的代碼中寫sql還是使用存儲過程?

Smart貓小萌 2019-04-08 11:16:58
接手維護一個項目,c#實現,.net框架,Model,Dao,Bussiness分層架構。項目中的DB操作(增刪改查)全部用存儲過程實現。我可以想到的壞處是:如果更換數據庫,則工作量會非常大。接手項目維護,或者參與開發的人都必須掌握對應數據庫的存儲過程寫法。想問下全部用存儲過程做有什么好處?stackoverflow上有人給出從安全角度考慮的好處:youhavetograntpermissionsdirectlytotheunderlyingtablesetc(授權級別)withasproc,allthereal-underlyingschemainformationcanbeencapsulated/hiddenaway(SPscanbeencryptedtoo)(使用存儲過程可以對底層的數據結構信息做了相對的加密,因為服務器和數據庫的通信過程中不會再出現表結構)http://stackoverflow.com/questions/1199886/stored-procedures-vs-no-stored-procedures-security-viewpoint這個好處不是特別有用吧!還有其他的嗎?
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

強調存儲過程是上代數據庫為王時代的理念,在10年前oracle/sqlserver為主流的年代,通常都比較強調這個,直到今天還留有很大遺存。
目前基于java平臺的項目由于強大的orm框架影響,常規已基本都放棄存儲過程使用,.net平臺由于歷史遺留習慣和還缺乏一非常有力(業界統一的)的orm,所以還有很多項目保守舊有理念,以安全、性能等理由提倡由存儲過程實現一個數據中間層。
實際的來講,使用存儲過程
優點
性能-極端情況下對性能有一定提升
缺點
缺乏版本管理
調試跟蹤不便
單獨的分層導致開發、維護成本提高
長時間歷史維護后很容易和主體代碼脫節
分布不便
總體來說,除非對性能有特殊極端的要求,且數據邏輯極度復雜導致在sql層和代碼層面實現有非常大的性能差異(即使這兩點其實大部分也都能通過設計解決),否則當前已經沒有必要再使用存儲過程了。
                            
查看完整回答
反對 回復 2019-04-08
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我覺得還是用sql比較好,好處上面都已經講到,我就補充點壞處把
全部用存儲過程,意味著你把很多在php層面可以處理的業務邏輯都交給數據庫來處理,系統訪問量很高時,php容易水平擴展,而數據庫的擴展比PHP的擴容要麻煩的多,還得解決延遲等系列問題,數據庫永遠都是瓶頸,盡可能減少它的壓力,讓它處理最基本簡單的增刪改查,其他的計算交給php,比如groupby等.
                            
查看完整回答
反對 回復 2019-04-08
  • 2 回答
  • 0 關注
  • 411 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號