sys.dm_exec_function_stats (Transact-SQL)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure 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 の Basic、S0、S1 サービス対象、および 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)