sys.dm_exec_function_stats (Transact-SQL)

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance

キャッシュされた関数の集計パフォーマンス統計を返します。 ビューは、キャッシュされた関数のプランごとに 1 行を返します。その行の有効期間は関数がキャッシュに残っている間になります。 つまり、関数がキャッシュから削除されると、対応する行もこのビューから削除されます。 その時点で、パフォーマンス統計 SQL トレース イベントは、sys.dm_exec_query_statsと同様に発生します。 メモリ内関数や CLR スカラー関数など、スカラー関数に関する情報を返します。 テーブル値関数、およびスカラー UDF インライン化でインライン化されたスカラー関数に関する情報は返しません。

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

Note

データは完了したクエリのみを反映し、まだ実行中のクエリは反映されないため、sys.dm_exec_function_statsの結果は実行ごとに異なる場合があります。

列名 データ型 説明
database_id int 関数が存在するデータベースのID。

Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。
object_id int 関数のオブジェクト ID 番号。
type char(2) オブジェクトの型: FN = スカラー値関数
type_desc nvarchar(60) オブジェクトの種類の説明: SQL_SCALAR_FUNCTION
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_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

アクセス許可

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) 'function 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_function_stats AS d  
ORDER BY [total_worker_time] DESC;  

参照

実行関連の動的管理ビューと関数 (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)

sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_procedure_stats (Transact-SQL)