SQL Server顧問Brent Ozar最近發表了一篇文章,談到了每個SQL Server開發者在他們日常的編程任務中應該遵循的七種技術。按照Brent的說法,開發者應該盡量避免使用ORDER BY語句,他還建議開發者將所有查詢結果放入應用程序內存中再進行排序。 如果數據庫要執
SQL Server顧問Brent Ozar最近發表了一篇文章,談到了每個SQL Server開發者在他們日常的編程任務中應該遵循的七種技術。按照Brent的說法,開發者應該盡量避免使用ORDER BY語句,他還建議開發者將所有查詢結果放入應用程序內存中再進行排序。
如果數據庫要執行數據處理、排序、加載及緩存等任務,理想情況下每項任務應該使用一個獨立的數據庫。Brent建議這些數據庫使用簡單恢復模式,而且每天進行一次備份。
他同時建議開發者應有效地利用動態管理視圖(DMV), 還建議對于應用程序中的不同場景,如數據讀寫、5至15分鐘前的老數據以及昨天之前的老數據,應該使用3種不同的連接字符串來建立連接。按照Brent的 說法,第一種連接字符串的使用場景不易伸縮,因為我們在SQL Server中并沒有多少辦法將負載橫向擴展到處理寫入的多臺服務器上。
“對應用來說,美國服務器,已提交讀快照隔離(Read-Committed Snapshot Isolation)是比With(Nolock)更好的選擇,香港服務器,因為少了很多阻塞的麻煩,同時提供了一致的數據”,Brent說道。
按照Brent所說,你不應該再去參考老版本的書和在線文檔,因為它們不會定期更新。“當看到某個聽著不錯的建議時,我喜歡采取‘質疑Phil博士’(譯注:Dr.Phil是美國的一檔電視秀,一些觀眾對主持人的生活觀念持有不同意見)這樣的策略”,Brent說道。
最后Brent還建議,如果想重用代碼,那么最好用存儲過程和視圖代替函數。他認為函數對數據庫層的性能有很大影響。
不過,有些開發者并不同意Brent的建議。
Tyler Burd說道:
我不同意無節制地采用第2條意見(即“避免ORDER BY,香港虛擬主機,而是在應用程序中排序”)。
Brent對Tyler的評論回應道:
為什么不把整個數據集加載到應用程序中并緩存下來呢?
還有個別開發者留言,反對Brent所說的避免函數而使用視圖和存儲過程的觀點。
你是支持還是反對Brent的技巧和建議呢?請在此留言,InfoQ保證將其發給Brent進行處理和回復如何?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com