「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、プランキャッシュに保存された実行プランの一覧の出力について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_exec_cached_plans」における、プランキャッシュに保存された実行プランの一覧の出力について解説します。対応バージョンは、SQL Server 2008以降です。
SQL Serverでは、クエリを実行する際にはクエリ文や統計情報を使用してコンパイル処理が実行され、コンパイル結果は「実行プラン」としてプランキャッシュに保存されます。次回以降の実行では、コンパイル前にプランキャッシュが確認され、実行プランが保存されている場合にはコンパイルは行われません。
SQL Server内でメモリの負荷が発生すると、プランキャッシュに保存された実行プランは、コストベースの判断により削除される場合があります。
「sys.dm_exec_cached_plans」動的管理ビューでは、現在、プランキャッシュに保存されている実行プランの一覧を出力できます。
なお、「sys.dm_exec_cached_plans」動的管理ビューの結果には、プラン表示やクエリテキストは含まれていません。そのため、実行プランの詳細を確認する場合には、結果に含まれる「plan_handle」列の値を使用し、「sys.dm_exec_query_plan」動的管理関数や「sys.dm_exec_sql_text」動的管理関数と結合して、プラン表示やクエリテキストを出力する必要があります。
プランキャッシュに保存された実行プランごとに1行出力されます。
列名 | データ型 | 説明 |
---|---|---|
bucketid | int | エントリをキャッシュするハッシュバケットのID |
refcounts | int | このキャッシュオブジェクトを参照しているキャッシュオブジェクトの数 |
usecounts | int | キャッシュオブジェクトが検索された回数。パラメーター化クエリがキャッシュでプランを検索するときは増加しない |
size_in_bytes | int | キャッシュオブジェクトによって使用されているバイト数 |
memory_object_address | varbinary(8) | キャッシュエントリのメモリアドレス |
cacheobjtype | nvarchar(34) | キャッシュオブジェクトの種類 Compiled Plan Compiled Plan Stub Parse Tree Extended Proc CLR Compiled Func CLR Compiled Proc |
objtype | nvarchar(16) | オブジェクトの種類 Proc: ストアドプロシージャ Prepared: 準備済みステートメント Adhoc: アドホッククエリ ReplProc: レプリケーションフィルタープロシージャ Trigger: トリガー View: ビュー Default: Default UsrTab: ユーザーテーブル SysTab: システムテーブル Check: CHECK 制約 Rule: ルール |
plan_handle | varbinary(64) | メモリ内のプランの識別子 |
pool_id | int | このプランのリソースプールのID |
Copyright © ITmedia, Inc. All Rights Reserved.