SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

wait_stats と latch_stats の関連性について

leave a comment

SQL Server の待ち事象を確認するための DMV として頻繁に使うものとして以下の 2 種類があります。

この 2 種類の DMV の関連性について少し触れてみたいと思います。

wait_stats の中では様々な待ち事象を確認することができますが、latch_stats との関連を見る場合には以下の 2 種類に注目をします。

  • バッファーラッチ (Buffer Latch)
  • ノンバッファーラッチ (Non-Buffer Latch)

バッファーラッチはメモリ上のデータを操作する場合などに発生するラッチとなり、一般的には以下の待ち事象が該当するといわれています。

  • PAGEIOLATCH_xx
  • PAGELATCH_xx

ノンバッファーラッチは上記以外のラッチとなり、以下の待ち事象が該当します。

  • LATCH_xx

wait_stats の観点から見た場合には、ここまでの情報を取得することができますが、ノンバッファーラッチについては LATCH_xx でまとめられています。
ノンバッファーラッチは実際には単一の待ち事象ではなく、様々な種類が存在しています。
LATCH_xx の詳細を見るために使用するのが、sys.dm_os_latch_stats となります。
latch_stats には BUFFER という待ち事象があり、これは wait_stats のバッファーラッチの集計値とほぼ一致するかと思います。
2 つの DMV の関連性としては以下のような関係が成り立ちます。

  • sys.dm_os_wait_stats の LATCH_xx の詳細を見るためには、sys.dm_os_latch_stats の BUFFER 以外を確認
  • sys.dm_os_latch_stats の BUFFER の詳細を見るためには、sys.dm_os_wait_stats の LATCH_xx 以外を確認

どちらの DMV をベースにするかによって、詳細の見方が変わってくるのですが、待ち事象を見る場合には二つセットで取得するのが一般的ですので、同一タイミングで情報を取得してどのように読み解けばいいかを知っておくと便利かと。

Share

Written by Masayuki.Ozawa

12月 3rd, 2013 at 8:08 am

Posted in SQL Server

Leave a Reply