PERFMONを介してパフォーマンスカウンターを監視する方法を引き続き説明します|この記事シリーズのSQLServerパフォーマンスのトラブルシューティング。
SQLServerパフォーマンスのトラブルシューティング
この前に前の記事を読んでください。
SQLServerのパフォーマンスのトラブルシューティング-2ActivityMonitorを介してデータベースとインスタンスを監視する
PERFMONを介したパフォーマンスカウンターの監視
データベースとサーバーで発生するボトルネックは、サーバーリソースの使用を調べることで特定できます。 SQLServerに影響を与える最も重要なボトルネックは次のとおりです。
- メモリのボトルネック
- ディスクI/Oのボトルネック
- CPUのボトルネック
SQLServerのメモリボトルネック
SQL Serverインスタンスは、起動時に設定された最大メモリパラメータと最小メモリパラメータに従って、オペレーティングシステム(OS)からメモリスペースを割り当てます。デフォルトでは、SQL Serverインスタンスのメモリ使用量は、ページングを回避するために継続的に増加します。 OS上のプロセス用のメモリスペースがなくなると、オペレーティングシステムはSQL Serverに警告し、SQLServerは割り当てた追加のメモリを解放します。
最大メモリパラメータと最小メモリパラメータは、次の画面から設定できます。 (SQL Server Management Studio –> [SQLインスタンス]を右クリックして[サーバーのプロパティ]を選択します)
SQL Serverインスタンスのボトルネックの一般的な原因は、メモリが不足していることです。メモリが不足している場合は、ハードページフォールトと呼ばれます。 データベースがメモリではなく物理ディスクからデータを読み取る場合。
次のパフォーマンスカウンターを確認して、データベースとOSにメモリのボトルネックがあるかどうかを確認する必要があります。
メモリ:SQLServerのページ/秒
メモリveに存在せず、ディスクから読み取る必要のあるメモリページの数と、ディスクに書き込む必要のあるメモリページの数を示します。
この値は、データベースが正常に実行されている間、一定期間追跡する必要があり、平均値を決定する必要があります。問題が発生した場合にこの値が常に高い場合は、OSの物理メモリのサイズを増やすと便利です。
メモリ:SQLServerでコミットされたバイト
RAMおよびディスク上のpagefile.sysからインスタンスによって使用される合計メモリスペースを示します。供給されるメモリの量が十分である場合、このカウンタは合計RAMサイズを超えることはありません。十分なメモリがない場合は、pagefile.sysスペースが使用されます。これは、関連するパフォーマンスカウンター値がRAM値を超えることを意味します。このようなシナリオでは、サーバーにRAMを追加すると、システムが簡単になります。
メモリ:SQLServerで使用可能なバイト数
インスタンスで使用可能なメモリの合計量を示します。通常、この値は低く表示されます。このカウンターの値が常に4MB未満の場合は、ページング操作が多すぎます。
SQLServerのディスクI/Oボトルネック
ディスクまたはストレージで発生するディスクI/Oボトルネックについては、Perfmonツールの物理ディスクと論理ディスクの下にあるパフォーマンスカウンターの値を確認する必要があります。
- ディスク秒/読み取りなどのカウンターの値の場合 カウンタは15〜20ミリ秒を超えており、通常はディスクパフォーマンスの問題です。
- 平均ディスク秒/書き込みの継続的な高い値 カウンタは、ディスクにパフォーマンスの問題があることを示します。
SQL Serverの%ディスク時間
ディスクの読み取り/書き込み密度を表示します。この値が80%の場合、ディスクが広く使用されていることがわかります。 50%以下の値は、ディスクのボトルネックがないことを示します。
平均SQLServerのディスクキューの長さ
ディスクに対して行われたI/Oで待機しているものを示しています。この値が常に高い場合は、ディスクまたはストレージのボトルネックが発生したことを意味します。
平均SQLServerでのディスクバイト/転送
ディスクへの読み取りおよび書き込み中に処理された平均バイト数を示します。値が大きいほど、ディスクが効率的に動作していることを意味します。
CPUのボトルネック
メモリとディスクのI/Oと比較して、システムの速度がCPUから低下しているかどうかを確認する方が簡単です。なぜなら、メモリとディスクを確認した後、さらに問題があり、CPU側を調べる必要がある場合は、システムCPUをすぐに確認できるからです。システムのCPUが80%の場合は問題があることを意味しますが、50%の場合はCPUが原因ではないと判断できます。
プロセッサ:SQL Serverの%プロセッサ時間
CPUのアクティブなランタイムを表示します。
OSがサーバーキューの長さを増やすことなくリクエストを処理できる場合 価値があれば、プロセスは可能な限り迅速に処理されます。
プロセッサ:%特権時間
SQLServerが実行されているOSに割り当てられたCPU時間を表示します。
プロセッサ:%ユーザー時間
オペレーティングシステムで実行されている他のアクティビティに費やされたCPU時間を表示します。
次の記事では、SQLServerのパフォーマンスのトラブルシューティングについて引き続き説明します。
SQLServerのパフォーマンスのトラブルシューティング-4DMV(動的管理ビュー)とDMF(動的管理機能)の使用