sys.dm_exec_procedure_stats (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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 の BasicS0S1 サービス対象、および Elastic Pool のデータベースの場合、サーバー管理者アカウント、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)