sys.dm_exec_query_memory_grants

新規 : 2006 年 4 月 14 日

メモリ許可を取得したクエリまたは実行のためのメモリ許可をまだ要求しているクエリに関する情報を返します。メモリ許可を待機する必要のないクエリは、このビューには表示されません。

列名 データ型 説明

session_id

smallint

このクエリを実行中のセッションの ID (SPID) 。

request_id

int

要求の ID。セッションのコンテキスト内で一意です。

scheduler_id

int

このクエリのスケジュールを設定しているスケジューラの ID。

dop

smallint

このクエリの並行処理の程度。

request_time

datetime

このクエリがメモリ許可を要求した日付と時刻。

grant_time

datetime

このクエリにメモリが許可された日付と時刻。メモリがまだ許可されていない場合は NULL です。

requested_memory_kb

bigint

メモリの要求量の合計 (KB 単位)。

granted_memory_kb

bigint

実際に許可されたメモリの総量 (KB 単位)。メモリがまだ許可されていない場合、NULL になることがあります。一般的な状況では、この値は requested_memory_kb と同じになります。インデックス作成では、最初に許可されたメモリ量を超えて、追加のオンデマンド メモリが許可される場合があります。

required_memory_kb

bigint

このクエリを実行するために必要な最小メモリ (KB 単位)。requested_memory_kb は、この値以上になります。

used_memory_kb

bigint

この時点で使用されている物理メモリ (KB 単位)。

max_used_memory_kb

bigint

この時点までに使用された最大物理メモリ (KB 単位)。

query_cost

float

推定クエリ コスト。

timeout_sec

int

このクエリがメモリ許可要求をやめるまでのタイムアウト (秒単位)。

resource_semaphore_id

smallint

このクエリが待機しているリソース セマフォの ID。

queue_id

smallint

このクエリがメモリ許可を待機している待機キューの ID。メモリが既に許可されている場合は NULL です。

wait_order

int

指定した queue_id 内の待機キューの順番。他のクエリがメモリ許可を取得するか、タイムアウトになった場合、個々のクエリのこの値は変化する可能性があります。メモリが既に許可されている場合は NULL です。

is_next_candidate

bit

次のメモリ許可の候補。

1 = はい

0 = いいえ

NULL = メモリが既に許可されている

wait_time_ms

bigint

待機時間 (ミリ秒単位)。メモリが既に許可されている場合は NULL です。

plan_handle

varbinary(64)

このクエリ プランの識別子。実際の XML プランを抽出するには、sys.dm_exec_query_plan を使用します。

sql_handle

varbinary(64)

このクエリの Transact-SQL テキストの識別子。実際の Transact-SQL テキストを取得するには、sys.dm_exec_sql_text を使用します。

権限

サーバーの VIEW SERVER STATE 権限が必要です。

解説

クエリ タイムアウトの一般的なデバッグ方法は、次のようになります。

  • sys.dm_os_memory_clerkssys.dm_os_sys_info、およびさまざまなパフォーマンス カウンタを使用して、全体的なシステム メモリ状態を調べます。
  • sys.dm_os_memory_clerks で、type = 'MEMORYCLERK_SQLQERESERVATIONS' であるクエリ実行メモリ予約を調べます。
  • sys.dm_exec_query_memory_grants を使用して、許可を待機しているクエリを調べます。
  • sys.dm_exec_requests を使用して、メモリを集中的に使用するクエリをさらに調べます。
  • ランナウェイ クエリの疑いがある場合は、sys.dm_exec_query_plan のプラン表示と、sys.dm_exec_sql_text のバッチ テキストを調べます。

ORDER BY または集計を含む動的管理ビューを使用するクエリではメモリの使用量が増える場合があり、それによってトラブルシューティングが必要な問題が発生する可能性があります。sys.dm_exec_query_memory_grants は、SQL Server 2005 Service Pack 1 の新しいビューです。sys.dm_exec_query_memory_grants 内の情報は、SQL Server 2005 の内部実装に固有であり、次のリリースの SQL Server では変更される予定です。トラブルシューティングには sys.dm_exec_query_memory_grants を使用しますが、SQL Server の将来のバージョンを使用するアプリケーションには含めないようにしてください。

参照

関連項目

sys.dm_exec_query_resource_semaphores
実行関連の動的管理ビューおよび関数

ヘルプおよび情報

SQL Server 2005 の参考資料の入手