監視磁碟使用量
Microsoft SQL Server 使用 Microsoft Windows 作業系統輸入/輸出 (I/O) 呼叫,以執行磁碟上的讀取和寫入作業。SQL Server 會管理執行磁碟 I/O 的時間與方法,但 Windows 作業系統會執行基本的 I/O 作業。I/O 子系統包含了系統匯流排、磁碟控制卡、磁碟、磁帶機、光碟機和許多其他的 I/O 裝置。磁碟 I/O 經常是造成系統瓶頸的原因。
監視磁碟活動涉及兩個重點:
- 監視磁碟 I/O 與偵測額外的分頁方式
- 隔離 SQL Server 建立的磁碟活動
監視磁碟 I/O 與偵測額外的分頁方式
可監視以判定磁碟活動的兩種計數器如下:
- PhysicalDisk:% Disk Time
- PhysicalDisk: Avg. Disk Queue Length
在「系統監視器」中,PhysicalDisk: % Disk Time 計數器可監視磁碟忙碌地處理讀取/寫入活動的時間百分比。若 PhysicalDisk: % Disk Time 計數器很高 (超過 90 %),請檢查 PhysicalDisk: Current Disk Queue Length 計數器來查看有多少系統要求正在等候磁碟存取。等候的 I/O 要求數不應持續超過實體磁碟所包含之讀寫頭數的 1.5 到 2 倍。大多數的磁碟都有一個讀寫頭,而通常獨立磁碟容錯陣列 (RAID) 裝置則有多個讀寫頭。硬體 RAID 裝置在「系統監視器」中會顯示為實體磁碟。透過軟體而建立的 RAID 裝置,在「系統監視器」中會顯示為多個執行個體。
使用 Current Disk Queue Length 和 % Disk Time 計數器的數值來偵測磁碟子系統內的瓶頸。如果 Current Disk Queue Length 與 % Disk Time 計數器值一直很高,請考慮執行以下作業:
- 使用較快的磁碟機。
- 將一些檔案移到其他磁碟或伺服器。
- 如果已使用 RAID 的話,請為 RAID 陣列新增磁碟。
如果您使用 RAID 裝置,% Disk Time 計數器可指出大於 100% 的值。如果真的超過 100%,請使用 PhysicalDisk: Avg. Disk Queue Length 計數器,判定平均有多少系統要求正在等待磁碟存取。
I/O 繫結 (Bind) 的應用程式和系統將讓磁碟經常處於作用中狀態。
監視 Memory:Page Faults/sec 計數器可確認磁碟活動並非分頁所造成。在 Windows 中,造成分頁的原因如下:
- 處理序 (Process) 設定使用太多記憶體。
- 檔案系統 (File System) 活動。
如果同一台硬碟中擁有多個邏輯資料分割,請使用 Logical Disk 計數器,而非 Physical Disk 計數器。檢視邏輯磁碟計數器可協助您判定哪個檔案經常被存取。當您找到讀取/寫入活動率偏高的磁碟時,請檢視特定的讀取和寫入計數器 (例如,Logical Disk: Disk Write Bytes/sec),以瞭解造成邏輯磁碟區工作負載的磁碟活動類型。
隔離 SQL Server 所建立的磁碟活動
可監視以判定由 SQL Server 元件所產生之 I/O 數量的兩種計數器如下:
- SQL Server:Buffer Manager:Page reads/sec
- SQL Server:Buffer Manager:Page writes/sec
在「系統監視器」中,這些計數器會檢查以下的效能區域,監視由 SQL Server 元件所產生的 I/O 數量:
- 將分頁寫入磁碟
- 自磁碟讀取分頁
如果這些計數器的數值接近硬體 I/O 子系統的容量上限,您需試著減少此數值,作法包括調整應用程式或資料庫來減少其 I/O 作業 (例如索引範圍、較佳的索引或正規化)、增加硬體的 I/O 容量,或是加入記憶體。例如,您可以使用 Database Engine Tuning Advisor 來分析一般的 SQL Server 工作負載,並產生索引、索引檢視和資料分割的建議,以改善系統效能。如需有關 Database Engine Tuning Advisor 的詳細資訊,請參閱<微調實體資料庫設計>。