SQLOSスケジューラの動作状況は動的管理ビュー sys.dm_os_schedulers を参照することで確認可能。
動的管理ビューの参照
SELECT * FROM sys.dm_os_schedulers;
sys.dm_os_schedulers のカラム一部紹介
- runnable_tasks_count
実行可能キューでスケジュールされるのを待機しているワーカーの数。
要求されている作業量(実行されているクエリの数)に対して、CPUの処理能力が追い付いていない可能性がある。
- current_workers_count
このスケジューラの関連付けられているワーカーの数。
SQLOSスケジューラは、必要に応じてワーカーを作成していくため、必ずしもスケジューラが管理可能な最大数のワーカーを常に保持しているわけではない。
- work_queue_count
保留中のキュー内の処理の数。
この数の処理が、実行に必要となるワーカーの空きを待っている。
この値が常に高い場合は、実際にワーカーの数が不足していることもあるが、ほとんどの場合は別の潜在的な問題が存在することを示している。
例)多くのワーカーが長時間ロック獲得待ちになっていたり、過剰な数の並列処理が行われていたりといったケース
動的管理ビュー
すべての動的管理ビューと動的管理関数はsysスキーマに含まれ、dm_* という名前付け規則に従っている。動的管理ビューまたは動的管理関数を使用するときは、sysスキーマを使用して、ビューまたは関数の名前にプレフィックスをつける必要がある。
SELECT * FROM sys.dm_os_wait_stats;
参考
- 絵で見てわかるSQLServerの仕組み(著:平山 理)
- Microsoft Docs
- 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典]
最後に
SQLServerを最近使う機会が多くなってきたので1から勉強を始めました。
最終的には、性能関連の作業がこなせるようになることを目標にしています。