軟件開發者最初為了做出某種功能而努力着。
當有一天,開發者們掌握了開發的門道,實現功能已經家常便飯了。
於是人們開始考慮更多問題,性能就是一個問題。
通常2-4年工作經驗的開發者會很糾結這個問題,但由於基礎參差不齊,對性能的理解也大不相同。
那些年也許我們過於在乎性能問題了。
誤區一:O/RM工具影響性能
發現很多人喜歡拿O/RM工具討論性能,害怕引入ORM工具以后帶來損失性能的問題,
不過據我所知目前一些主流的ORM工具性能都半斤八兩,ORM工具之間的比較不是性能問題,而是使用習慣的問題。
ORM與原生ADO.NET比較,肯定會損失一定的性能,但是帶來了提高開發效率的優勢。
據我所知,很多同行做着的OA、ERP什么的系統用戶數量都不多,
過於計較性能問題,那就是拿5%不到的特殊情況,拒絕大多數情況提高開發效率。
沒有人說用了ORM就一定要每個地方都用ORM到底。
誤區二:存儲過程可提高性能
采用存儲過程本身沒有什么問題,過於頻繁地用存儲過程,調試就會比較煩。
1、程序里加斷點,然后變量復制到存儲過程里加斷點調試。
2、過於依賴存儲過程,數據庫里包含業務邏輯,業務邏輯就分散在程序與數據庫,代碼可讀性損失。
3、調用存儲過程的確讓很多SQL語句變成了一個存儲過程名和參數,減少了網絡傳輸,但很多情況下不需要這點性能。
4、業務邏輯都寫在存儲過程里了,用面向對象語言的話就當做面向過程語言用了,對開發功能復雜的項目比較不利。
誤區三:大數據性能問題
只要接觸到幾百萬或者幾千萬就認為是大數據,有些人甚至以為MSSQLSERVER數據庫碰到千萬級的就得掛了。
其實不然,如果每個月以百萬級的數據增長,那么對查詢而言這些都是小數據,利用分區與查詢約束還是比較容易解決的。
而用同樣的方法,MSSQLSERVER也能處理超越千萬級的數據。
數據庫真正的性能問題在哪里?
真正的性能問題從宏觀上講我認為是數據庫設計問題,微觀上則是SQL調優。
總結
不該以性能為理由拒絕ORM工具,也不該濫用存儲過程。
關注性能從設計階段開始,不可過於糾結性能問題而損失開發效率。