Share via


監視磁碟使用量

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 的詳細資訊,請參閱<微調實體資料庫設計>。