ディスクの使用量の監視
Microsoft SQL Server では、Microsoft Windows オペレーティング システムの入出力 (I/O) 呼び出しを使用して、ディスクに対する読み取りおよび書き込み操作を実行します。SQL Server では、ディスク I/O を実行する時期と方法が管理されます。ただし、基本的な I/O 操作は Windows オペレーティング システムで実行されます。I/O サブシステムには、システム バス、ディスク コントローラ カード、ディスク、テープ ドライブ、CD-ROM ドライブなど、多数の I/O 装置が含まれます。ディスク I/O は、頻繁にシステムのボトルネックの原因となります。
ディスク利用状況の監視には、次の 2 つの領域があります。
- ディスク I/O の監視と、過度なページングの検出
- SQL Server で生成されるディスク利用状況の隔離
ディスク I/O の監視と、過度なページングの検出
ディスク利用状況を調べるために監視できるカウンタには、次の 2 つがあります。
- 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 倍に抑える必要があります。ほとんどのディスクのスピンドルは 1 つです。ただし、RAID (redundant array of independent disk) 装置には、通常さらに多くのスピンドルがあります。ハードウェア RAID 装置は、システム モニタに 1 つの物理ディスクとして表示されます。ソフトウェアを介して作成された RAID 装置は、システム モニタに複数のインスタンスとして表示されます。
ディスク サブシステムのボトルネックを検出するには、Current Disk Queue Length カウンタと % Disk Time カウンタの値を使用します。Current Disk Queue Length カウンタと % Disk Time カウンタの値が常に高い場合は、次のことを検討してください。
- より高速なディスク ドライブを使用する。
- 一部のファイルを別のディスクまたはサーバーに移動する。
- RAID アレイにディスクを追加する。
RAID 装置を使用している場合、% Disk Time カウンタが 100% を超える値を示すことがあります。その場合は、PhysicalDisk: Avg.Disk Queue Length カウンタを使用して、平均でいくつのシステム要求がディスク アクセスを待機しているかを確認します。
I/O バインドのアプリケーションとシステムでは、ディスクが絶えずアクティブになることがあります。
ディスク利用状況がページングによるものかどうかを確認するには、Memory: Page Faults/sec カウンタを監視します。Windows では、次の原因によってページングが発生します。
- 過度のメモリを使用するように構成されたプロセス
- ファイル システムの利用状況
同じハード ディスクに複数の論理パーティションがある場合は、Physical Disk カウンタの代わりに Logical Disk カウンタを使用してください。論理ディスク カウンタを使用すれば、アクセス数が多いファイルを調べることができます。読み取り/書き込みの利用状況が高レベルであるディスクを見つけたら、読み取り専用のカウンタと書き込み専用のカウンタを使用して、Logical Disk: Disk Write Bytes/sec などの各論理ボリュームで負担の原因となったディスク利用状況の種類を調べます。
SQL Server によって生成されるディスク利用状況の隔離
SQL Server コンポーネントによって生成される I/O の量を調べるには、次の 2 つのカウンタを監視します。
- SQL Server:Buffer Manager:Page reads/sec
- SQL Server:Buffer Manager:Page writes/sec
システム モニタのこれらのカウンタでは、次のパフォーマンス領域を調べることによって、SQL Server コンポーネントで生成される I/O の量が監視されます。
- ディスクへのページの書き込み
- ディスクからのページの読み取り
これらのカウンタの値がハードウェア I/O サブシステムの容量制限に近づいたら、インデックスの使用、高性能なインデックス、または正規化などの I/O 操作が減るようにアプリケーションまたはデータベースを調整するか、ハードウェアの I/O 容量を増やすか、またはメモリを増設することによって、値を減らすよう試みる必要があります。たとえば、データベース エンジン チューニング アドバイザを使用して、通常の SQL Server ワークロードを分析し、サーバー パフォーマンスを向上させるためのインデックス、インデックス付きビュー、およびパーティションの推奨設定を生成できます。データベース エンジン チューニング アドバイザの詳細については、「物理データベース デザインのチューニング」を参照してください。