SQL server 服務器性能優化

解決SQL Server性能問題的關鍵是確定瓶頸在哪裏,最容易造成瓶頸的順序是:
磁盤I/O > CPU > RAM > 用戶連接數 > 網絡帶寬

對於大的數據庫,有些地方要注意一下:

1) 定期 DBCC CHECKDB (建議在服務器負荷較少的時候運行 DBCC CHECKDB。如果在負荷高峯期運行 DBCC CHECKDB,那麼事務吞吐量性能和 DBCC CHECKDB 完成時間性能都會受到影響。)

2) 定期重建索引(對於這種大數據庫,重建索引前把日誌模式轉到 bulk_logged,完成後再改回 full)

3) 避免收縮數據庫 (如果數據庫在用戶查詢繁忙時擴大,就會非常忙,這都可能是你遇到的問題的原因)
 如果可能,最好事先擴大數據庫,重建索引通常會導致日誌文件暴漲(參考第2點)
4) 定期重啓SQL服務,比如每1個月,每2周或1周重啓一次(這個很容易被忽略,但非常有效)

另外還有一點比較容易被忽略,
如果你的系統是事務處理和報表查詢混合在一起的,即
同時有很多用戶更新數據,也有用戶運行一些複雜的報表。
那麼,建議把你SQL Server的最大查詢並行度改爲1,默認爲0,
當有個用戶運行一個很複雜的查詢時,SQL Server 會把4個處理器都用去處理這個查詢,其他用戶就慢得多了。

如果並行度改爲1,SQL Server 總是用1個處理器去處理一個查詢。

---------------------------------------------------------------------------------------------------------------------------------------------

SQL Server做小應用比較方便,入門容易,但並不代表就只適合做小應用。

對於系統有點規模的,多CPU,磁盤陣列都有。這種硬件配置就不能使用默認的SQL Server配置,
默認的SQL Server配置參數只適合大多數情況。

你有2個4核CPU,算是8個核,那麼要爲tempdb建8個數據文件(data file),默認只有1個數據文件。
這個在多核系統裏面非常重要,各個CPU才能同時使用不同的數據文件去操作tempdb,否則就只有排隊等。
關鍵是8個數據文件大小必須一樣。細節參看:http://support.microsoft.com/kb/328551/zh-cn

上面設置最大並行度爲1的部分,你可以參看:http://support.microsoft.com/kb/329204/zh-cn

--------------------------------------------------------------------------------------------------------------------------------------------

最大並行度(MAXDOP)

注意MAXDOP 選項不會 限制 SQL Server 使用的處理器數。使用 親和力掩碼 配置選項來配置 SQL Server 使用的處理器數。

當您配置 MAXDOP 值時,請遵循以下準則:

  • 對於使用八個以上的處理器的服務器使用以下配置: MAXDOP = 8。
  • 服務器的有八個或更少的處理器,使用下列配置其中 N 等於處理器數: MAXDOP = 0 到 N
  • 對於具有 NUMA 配置的服務器,MAXDOP 不應超過分配給每個 NUMA 節點的 cpu 數。
  • 超線程已啓用的服務器的 MAXDOP 值不應超過物理處理器的數量。
這些都是 一般指導原則。可能有一些例外情況,這些指導原則。例如對於並不會使用在下列情況下的指導原則:
  • 如果服務器不是聯機事務處理 (OLTP) 基於服務器。
  • 如果服務器運行的大批量處理時沒有或最少的用戶負載。
  • 如果服務器正在運行大量佔用資源的操作。
注意在生產服務器上實現所做的更改之前,請測試配置。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

如何讓你的SQL運行的更快

http://www.sudu.cn/info/html/edu/mysql/20061124/171371_2.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章