連載
» 2021年09月07日 05時00分 公開

プランキャッシュに保存された実行プランの一覧を出力するSQL Server動的管理ビューレファレンス(41)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、プランキャッシュに保存された実行プランの一覧の出力について解説します。

[伊東敏章,@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。