sys.dm_exec_procedure_stats (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

キャッシュされたストアド プロシージャの集計パフォーマンス統計を返します。 ビューは、キャッシュされたストアド プロシージャのプランごとに 1 行を返します。その行の有効期間はストアド プロシージャがキャッシュに残っている間になります。 つまり、ストアド プロシージャがキャッシュから削除されると、対応する行もこのビューから削除されます。 その時点で、sys.dm_exec_query_stats と同様にパフォーマンス統計 SQL トレース イベントが発生します。

Azure SQL データベース では、動的管理ビューは、データベースの包含に影響する情報を公開することも、ユーザーがアクセスできる他のデータベースに関する情報を公開することもできません。 この情報が公開されるのを避けるために、接続されているテナントに属していないデータを含むすべての行がフィルター処理されます。

注意

データ の結果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。
object_id int ストアド プロシージャのオブジェクト ID 番号。
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、S0、S1 のサービス目標、およびエラスティック プール内のデータベースの場合は、サーバー管理者アカウント 、Azure Active Directory管理者アカウント、またはサーバー ロールのメンバーシップが必要 ##MS_ServerStateReader## です。 他のすべてのサービスSQL Database、データベースに対するアクセス許可、またはサーバー ロールのメンバーシップ VIEW DATABASE STATE ##MS_ServerStateReader## が必要です。

解説

ビュー内の統計は、ストアド プロシージャの実行が完了したときに更新されます。

次の例では、平均経過時間で識別される上位 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)