萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> SQL Server應用程序性能調優之硬件配置

SQL Server應用程序性能調優之硬件配置

  當應用程序性能出現問題時,服務器硬件通常會背上黑鍋,人們想到的往往是如何優化服務器的硬件。實際上恰恰相反,多數情況下,硬件並非導致性能問題的罪魁禍首。對於基於sql server的應用程序的性能和升級,服務器硬件所起的影響要遠比人們想象的小。

  多數應用程序運行緩慢的原因是因為其糟糕的前期設計,而並非硬件性能不夠。硬件通常被冠以惡名的原因是,在應用程序運行緩慢之前,性能問題通常不是那麼顯而易見。而且應用程序的設計不是說改就改的,人們解決性能問題最簡單直接的辦法就是提高其硬件性能。雖然這種辦法也有一定效果,不過它不能真正完全解決問題,這也是為什麼人們常常將性能低下歸結為硬件問題的原因。雖然硬件有時候確實會導致性能問題,但多數情況下它卻不是主要原因。

  為了防止你的服務器硬件給SQL Server應用軟件拖後腿,首先讓我們簡單看一下一些常見的硬件選擇和調優問題。

  選擇硬件

  為你的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設置方法解決這些問題的可能性非常小。

關鍵詞:

copyright © 萬盛學電腦網 all rights reserved