案件として、SQL Server の診断を実施させていただくことがあるのですが、その際にはパフォーマンスモニターの情報を取得して解析することがあります。
詳細については DELL (もともとは Quest の資料) が公開している SQL Server Perfmon Counters Poster が参考になりますが、私が取得している情報をメモとして。
パフォーマンスモニターを取得する際には、OS 系と SQL Server 系の 2 系統の項目を取得することになるかと思います。
私の場合、OS 系としては以下の項目を取得しています。
# 解析する場合には、対象オブジェクトの一部のカウンターを使用していますが。
OS としての情報はサーバーがどのようにリソースを消費しているかを確認できる情報を取得するようにしています。
Windows Server 2012 からは NUMA 系の情報も取得できるようになっていますので、NUMA ノード単位でのメモリ使用状況の情報を取得することが可能となります。
オブジェクト |
Windows Server 2003 |
Windows Server 2008 R2 |
Windows Server 2012 R2 |
Memory |
○ |
○ |
○ |
NUMA Node Memory |
– |
– |
○ |
Paging File |
○ |
○ |
○ |
Network Adapter |
– |
– |
○ |
Network Interface |
○ |
○ |
○ |
Physical Disk |
○ |
○ |
○ |
Logical Disk |
○ |
○ |
○ |
Process |
○ |
○ |
○ |
Processor |
○ |
○ |
○ |
Server |
○ |
○ |
○ |
Server Work Queue |
○ |
○ |
○ |
System |
○ |
○ |
○ |
バージョンによって取得できる項目が変わりますので、主要バージョンを表化してみました。
オブジェクト |
SQL Server 2005 |
SQL Server 2008 R2 |
SQL Server 2012 |
SQL Server 2014 |
○ |
○ |
○ |
○ |
|
– |
– |
○ |
○ |
|
SQLServer:Batch Resp Statistics |
– |
– |
○ |
○ |
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
SQLServer:Catalog Metadata |
○ |
○ |
○ |
○ |
– |
– |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
– |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
SQLServer:HTTP Storage |
– |
– |
– |
○ |
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
– |
– |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
SQLServer:Query Execution |
– |
– |
○ |
– |
– |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
○ |
○ |
○ |
○ |
|
– |
○ |
○ |
○ |
|
– |
– |
– |
○ |
|
– |
– |
– |
○ |
|
– |
– |
– |
○ |
|
– |
– |
– |
○ |
|
– |
– |
– |
○ |
|
– |
– |
– |
○ |
# AlwaysOn と In-Memory OLTP に関する項目も取得しています。
特定の項目が急に上昇 (スパイク) している場合は他の項目と比較して状況を正しく判断する必要がありますが、そのあたりについてはノウハウとなりますので本投稿では記載しません。
# ここで言いう DMV は sys.dm_os_performance_counters ではなく、それ以外の情報を指しています。