選擇硬體
為你的SQL Server應用選取最佳硬體要參照很多因素,諸如資料庫的規模、使用者的數量,資料庫被使用的方式(OLTP或OLAP)等等。雖然沒有成功的公式來估算 伺服器硬體需求,最好的辦法就是在開發階段提前開始測試你的應用。儘管許多有經驗的DBA可以對你所需要的最佳硬體給出合理的估測,只有通過實際的測試才 可確信滿足你的應用需要的硬體是什麼。
在考察伺服器硬體時,需要牢記以下硬體選擇方面的事項:
CPU:要購買可以擴充CPU數量的伺服器。例如,通過測試結果你認為單CPU伺服器就夠用,那麼你應該購買具備至少兩個CPU安裝空間的伺服器,哪怕現在空著另一個CPU插槽的位置。預留下將來升級擴充的空間。
記憶體: 它可能是對SQL Server的效能影響最大的硬體部分。理想情況下,你的整個資料庫應該可以fit into記憶體。不幸的是,這一般是不可能的。最低要求是,記憶體的大小應該能夠容納你的資料庫中最大表,如果經濟上可以接受,為伺服器配備其能夠支援大小的 記憶體,換句話說,記憶體多了沒壞處。
I/O子系統:它對SQL Server效能的影響僅次於記憶體,也非常重要。最低要求是,使用硬體RAID系統來運行你的資料庫。大概來說,你應該購買多個小硬碟,而不是一個大硬碟。在陣列中的硬碟數量越多,就可以獲得更快的I/O。
網路連接:在你的資料庫伺服器上,至少應該有一個百兆網卡,而且它應該串連到一個交換器上。理想情況下,伺服器應該有兩塊網卡,通過全雙工系統方式串連到交換器。
調優伺服器
如果沒有正確的配置和最佳化,最貴的伺服器硬體未必具有最好的效能。我曾經遇到過很多硬體相關的效能問題,其多數原因是驅動未正確安裝。這些硬體效能相關的問題中很多往往難於跟蹤和解決。一般來說,應該讓一個有經驗的技術高手來確保硬體被正確安裝和配置。然後,在該伺服器被用於生產環境之前,在一定條件下測試你的應用程式,以發現潛在的效能問題。另外,你的作業系統也必須被正確的配置,這涉及到很多方面,在這兒無法具體介紹。
為了在一個伺服器獲得最好效能,SQL Server應該獨享一台伺服器,而不應該同時還安裝其它管理工具。不要為了省一點錢而將你的IIS或MTS伺服器與SQL Server安裝在同一台伺服器上。這不僅僅會影響SQL Server的效能,而且使得效能調優和故障排查工作非常難於進行。
最佳化SQL Server配置
調優SQL Server的另一個常見誤解是,為了獲得最佳效能你必須定製最佳化它的多處配置。對於一些早期版本的SQL Server來說,這種做法或許有一定道理,但是對於最近版本的SQL Server,配置通常已經不再是一個問題,當然對於那些超大、超忙碌的伺服器來說或許是另外一種情況。
多數情況下,SQL Server可以自我調優。也就是說,SQL Server可以檢查自己啟動並執行任務,然後自動進行內部調整,以使指定任務獲得儘可能高的效能。
當你對SQL Server進行效能測試時,需要牢記SQL Server需要花一點時間來將自己調整到最佳化。換言之,啟動SQL Server服務後你立即獲得的效能,與在有負載情況下運行幾個小時後的SQL Server的效能是不相同的。因此在進行測試之前,要讓SQL Server有一定時間來適應你的負載。
通過企業管理器,或者sp_configure儲存過 程,你可以修改36個SQL Server配置選項。如果你沒有調優SQL Server的豐富經驗,我不建議你修改任何SQL Server的設定。如果你是一個新手,你所做的修改往往會適得其反,會降低SQL Server的效能。因為一旦修改了SQL Server的設定後,會使其喪失其自我調優的能力。
如果經過深思熟慮後,你仍然認為修改一個或多個SQL Server配置可以提高其在特定環境下的效能,那麼你應該穩妥謹慎的來對其進行修改。在你修改設定前,首先應通過諸如效能監控器之類的工具來瞭解當前 SQL Server的效能,以其作為基準。每次只進行一處修改。不要一次進行多個修改,因為這樣你無法明確每一個設定帶來了效能上的什麼變化。
在進行了一處修改後,再次在相同負載下測量SQL Server的效能是否真正有所提高。如果沒有,那麼恢複到預設設定。如果的確有提高,再繼續檢查效能在其它負載下是否也會提高。通過後期測試,你或許會 發現你的修改在某些負載下可以提高效能,但在其它負載下卻會降低效能。這也是為什麼我不推薦你修改多數設定的原因之一。
一般來說,如果你的SQL Server應用程式遭遇到了效能相關問題,通過修改SQL Server設定方法解決這些問題的可能性非常小。