エクスポート (0) 印刷
すべて展開

sys.dm_exec_query_memory_grants

更新日: 2011年4月

このトピックの情報は現在使用できません。最新バージョンは、SQL 14 Transact-SQL Reference. でご覧いただけます。

Important重要
このトピックは保守されていません。現在のバージョンについては、「sys.dm_exec_query_memory_grants」を参照してください。

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

Microsoft Azure SQL データベース では、動的管理ビューは、データベースの包含に影響する情報を公開することも、ユーザーがアクセスできる他のデータベースに関する情報を公開することもできません。この情報を公開しないように、接続されたテナントに属していないデータを含むすべての行がフィルターで除外されます。さらに、次の列の値はフィルター処理されます。その結果、列の値は NULL に設定されます。

  • scheduler_id

  • wait_order

  • pool_id

  • group_id

 

列名 データ型 説明

session_id

smallint

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

request_id

int

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

scheduler_id

int

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

この列の値はフィルター処理されます。値は NULL に設定されます。

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。

noteメモ
SQL Server 2008 より前のバージョンの SQL Server では、この ID が一意です。この変更は、クエリの実行のトラブルシューティングに影響する可能性があります。詳細については、後の「解説」を参照してください。

queue_id

smallint

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

wait_order

int

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

この列の値はフィルター処理されます。値は 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 を使用します。

group_id

int

このクエリが実行されているワークロード グループの ID。

この列の値はフィルター処理されます。値は NULL に設定されます。

pool_id

int

このワークロード グループが属するリソース プールの ID。

この列の値はフィルター処理されます。値は NULL に設定されます。

is_small

tinyint

1 に設定すると、この許可で小さなリソース セマフォが使用されます。0 に設定すると、通常のセマフォが使用されます。

ideal_memory_kb

bigint

物理メモリ内にすべてを収めるために必要なメモリ許可のサイズ (KB 単位)。これは基数の推定値に基づいています。

サーバーに対する VIEW DATABASE STATE 権限が必要です。master データベースから参照することはできません。詳細については、「Dynamic Management Objects」を参照してください。

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

  • 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 または集計を含む動的管理ビューを使用するクエリではメモリの使用量が増える場合があり、それによってトラブルシューティングが必要な問題が発生する可能性があります。

データベース管理者は、リソース ガバナー機能を使用することで、サーバー リソースを最大 64 個までのリソース プールに分散できます。SQL Server 2008 以降では、各プールが小規模の独立したサーバー インスタンスのように動作し、2 つのセマフォを必要とします。sys.dm_exec_query_resource_semaphores から返される行数は、最大で SQL Server 2005 で返される行数の 20 倍になることがあります。

表示:
© 2014 Microsoft