「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- アドホック クエリ
- 「実行プラン」が再利用されず、SQLがコンパイルされる。
- このため、多数のユーザが短いアドホック クエリを同時実行すると、
CPU の使用率が非常に高くなり、システム全体の性能が低下することがある。
- 「実行プラン」が再利用の再利用
- まったく同じクエリのときのみ「実行プラン」が再利用される。
- 検索キーの値を変更しただけで、「実行プラン」の再利用がされなくなる。
- これは、クエリをパラメタ化することで防ぐことができる。
監視方法 †
この場合、パフォーマンス カウンタを使用して監視を行う。
- SQL Server:Buffer Manager:Free pages
- SQL Server: SQL Statistics:SQL Compilations/sec
のカウンタ値が高く、
- SQL Server:Buffer Manager:Stolen Page Count
- SQL Server:Buffer Manager:Memory Grants Pending
カウンタ値が低いという状態になる。
必要に応じて、SQLプロファイラ(SQLトレース)を使用する。
問題のクエリが特定できたら、Management Studioを使用して、
クエリプラン(実行プラン)のグラフィカル表示も可能。
対策方法 †
この状態では、CPUボトルネックが発生する可能性がある。
この場合、SQLのコンパイルのコストを避けるために、
クエリのパラメタ化による「実行プラン」の再使用を検討する。
参考 †
アドホック クエリの性能問題の監視、対策方法については、以下のURLを参照のこと。
Tags: :データアクセス, :SQL Server, :障害対応, :性能