sys.dm_exec_procedure_stats (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
キャッシュされたストアド プロシージャの集計パフォーマンス統計を返します。 ビューは、キャッシュされたストアド プロシージャのプランごとに 1 行を返します。その行の有効期間はストアド プロシージャがキャッシュに残っている間になります。 つまり、ストアド プロシージャがキャッシュから削除されると、対応する行もこのビューから削除されます。 その時点で、 query_cache_removal_statistics
イベントは、SQL Server と Azure SQL Managed Instance の sys.dm_exec_query_stats と同様に発生します。
Azure SQL Database では、動的管理ビューでは、データベースの包含に影響する情報を公開したり、ユーザーがアクセスできる他のデータベースに関する情報を公開したりすることはできません。 この情報が公開されないようにするために、接続されているテナントに属していないデータを含む行はすべてフィルタリングされます。
Note
データは完了したクエリのみを反映し、まだ実行中のクエリは反映されないため、 sys.dm_exec_procedure_stats の結果は実行ごとに異なる場合があります。
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_exec_procedure_stats
という名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
列名 | データ型 | 説明 |
---|---|---|
database_id | int | ストアド プロシージャが存在するデータベースの ID。 Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。 |
object_id | int | ストアド プロシージャのオブジェクト識別番号。 |
type | char(2) | 次のいずれかのオブジェクトの種類。 P = SQL ストアド プロシージャ PC = アセンブリ (CLR) ストアド プロシージャ X = 拡張ストアド プロシージャ |
type_desc | nvarchar(60) | オブジェクトの種類の説明。 SQL_STORED_PROCEDURE CLR_STORED_PROCEDURE EXTENDED_STORED_PROCEDURE |
sql_handle | varbinary(64) | これを使用して、このストアド プロシージャ内から実行された sys.dm_exec_query_stats 内のクエリと関連付けることができます。 |
plan_handle | varbinary(64) | メモリ内プランの識別子。 この識別子は一時的なものであり、プランがキャッシュに残っている間だけ一定です。 この値は、sys.dm_exec_cached_plans 動的管理ビューで使用できます。 ネイティブ コンパイル ストアド プロシージャがメモリ最適化テーブルに対してクエリを実行するときは、常に 0x000 になります。 |
cached_time | datetime | ストアド プロシージャがキャッシュに追加された時刻。 |
last_execution_time | datetime | ストアド プロシージャが最後に実行された時刻。 |
execution_count | bigint | ストアド プロシージャが最後にコンパイルされてから実行された回数。 |
total_worker_time | bigint | コンパイル後にこのストアド プロシージャの実行によって消費された CPU 時間の合計 (マイクロ秒単位)。 ネイティブ コンパイル ストアド プロシージャに関して、多くの実行が 1 ミリ秒未満である場合は、 total_worker_time は精度が高くない可能性があります。 |
last_worker_time | bigint | ストアド プロシージャを前回実行したときに使用された CPU 時間 (マイクロ秒単位)。 1 |
min_worker_time | bigint | このストアド プロシージャが 1 回の実行中に消費した最小 CPU 時間 (マイクロ秒単位)。 1 |
max_worker_time | bigint | このストアド プロシージャが 1 回の実行中に消費した最大 CPU 時間 (マイクロ秒単位)。 1 |
total_physical_reads | bigint | このストアド プロシージャがコンパイルされてから実行された物理読み取りの合計数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
last_physical_reads | bigint | ストアド プロシージャが最後に実行された時点で実行された物理読み取りの数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
min_physical_reads | bigint | このストアド プロシージャが 1 回の実行中に実行した物理読み取りの最小数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
max_physical_reads | bigint | このストアド プロシージャが 1 回の実行中に実行した物理読み取りの最大数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
total_logical_writes | bigint | このストアド プロシージャがコンパイルされてから実行された論理書き込みの合計数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
last_logical_writes | bigint | プランが最後に実行された時点で汚れたバッファー プール ページの数。 ページが既にダーティの場合 (変更された場合)、書き込みはカウントされません。 メモリ最適化テーブルのクエリは常に 0 になります。 |
min_logical_writes | bigint | このストアド プロシージャが 1 回の実行中に実行した論理書き込みの最小数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
max_logical_writes | bigint | このストアド プロシージャが 1 回の実行中に実行した論理書き込みの最大数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
total_logical_reads | bigint | このストアド プロシージャがコンパイルされてから実行された論理読み取りの合計数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
last_logical_reads | bigint | ストアド プロシージャが最後に実行された時点で実行された論理読み取りの数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
min_logical_reads | bigint | このストアド プロシージャが 1 回の実行中に実行した論理読み取りの最小数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
max_logical_reads | bigint | このストアド プロシージャが 1 回の実行中に実行した論理読み取りの最大数。 メモリ最適化テーブルのクエリは常に 0 になります。 |
total_elapsed_time | bigint | このストアド プロシージャの完了した実行の合計経過時間 (マイクロ秒単位)。 |
last_elapsed_time | bigint | このストアド プロシージャの最後に完了した実行の経過時間 (マイクロ秒単位)。 |
min_elapsed_time | bigint | このストアド プロシージャの実行が完了した場合の最小経過時間 (マイクロ秒単位)。 |
max_elapsed_time | bigint | このストアド プロシージャの実行が完了した場合の最大経過時間 (マイクロ秒単位)。 |
total_spills | bigint | このストアド プロシージャがコンパイルされてから実行されて書き込まれたページの合計数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
last_spills | bigint | ストアド プロシージャが最後に実行された時点で書き込まれたページの数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
min_spills | bigint | このストアド プロシージャが 1 回の実行中に書き込んだページの最小数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
max_spills | bigint | このストアド プロシージャが 1 回の実行中に書き込んだページの最大数。 適用対象: SQL Server 2017 (14.x) CU3 以降 |
pdw_node_id | int | このディストリビューションがオンになっているノードの識別子。 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) |
total_page_server_reads | bigint | このストアド プロシージャがコンパイルされてから実行されたページ サーバーの読み取りの合計数。 適用対象: Azure SQL Database Hyperscale |
last_page_server_reads | bigint | ストアド プロシージャが最後に実行された時点で実行されたページ サーバーの読み取りの数。 適用対象: Azure SQL Database Hyperscale |
min_page_server_reads | bigint | このストアド プロシージャが 1 回の実行中に実行したページ サーバー読み取りの最小数。 適用対象: Azure SQL Database Hyperscale |
max_page_server_reads | bigint | このストアド プロシージャが 1 回の実行中に実行したページ サーバー読み取りの最大数。 適用対象: Azure SQL Database Hyperscale |
1 統計収集が有効になっているネイティブ コンパイル ストアド プロシージャの場合、ワーカー時間はミリ秒単位で収集されます。 クエリが 1 ミリ秒未満で実行された場合は、値は 0 になります。
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database Basic、S0、および S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
解説
ビューの統計は、ストアド プロシージャの実行が完了すると更新されます。
例
次の例では、平均経過時間で識別される上位 10 個のストアド プロシージャに関する情報を返します。
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name',
d.cached_time, d.last_execution_time, d.total_elapsed_time,
d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
ORDER BY [total_worker_time] DESC;
参照
実行関連の動的管理ビューと関数 (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)