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_clerks、sys.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
実行関連の動的管理ビューおよび関数