sys.dm_exec_function_stats (Transact-SQL)
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает статистическую статистику производительности для кэшированных функций. Представление возвращает по одной строке для каждого кэшированного плана функции, а время существования строки — до тех пор, пока функция остается кэшированной. При удалении функции из кэша соответствующая строка удаляется из этого представления. В то время событие трассировки sql статистики производительности вызывается аналогично sys.dm_exec_query_stats. Возвращает сведения о скалярных функциях, включая функции в памяти и скалярные функции CLR. Не возвращает сведения о табличных функциях и о скалярных функциях, которые встраиваются в скалярную структуру UDF.
В База данных SQL Azure динамические административные представления не могут предоставлять сведения, влияющие на доступность базы данных или предоставление сведений о других базах данных, к которым пользователь имеет доступ. Чтобы избежать предоставления этой информации, отфильтровывается каждая строка, содержащая данные, которые не принадлежат подключену клиенту.
Примечание.
Результаты sys.dm_exec_function_stats могут отличаться в зависимости от каждого выполнения, так как данные отражают только завершенные запросы, а не те, которые еще не выполнялись.
Имя столбца | Тип данных | Description |
---|---|---|
database_id | int | Идентификатор базы данных, в которой находится функция. В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере. |
object_id | int | Идентификационный номер объекта функции. |
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 | Общий объем времени ЦП в микросекундах, который использовался выполнением этой функции, так как она была скомпилирована. Для скомпилированных в собственном коде функций total_worker_time может не быть точным, если многие выполнения занимают менее 1 миллисекунда. |
last_worker_time | bigint | Время ЦП в микросекундах, которое использовалось при последнем выполнении функции. 1 |
min_worker_time | bigint | Минимальное время ЦП в микросекундах, которое эта функция когда-либо использовала во время одного выполнения. 1 |
max_worker_time | bigint | Максимальное время ЦП в микросекундах, которое эта функция когда-либо использовала во время одного выполнения. 1 |
total_physical_reads | bigint | Общее количество физических операций чтения, выполняемых выполнением этой функции, так как оно было скомпилировано. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
last_physical_reads | bigint | Количество физических операций чтения, выполненных при последнем выполнении функции. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
min_physical_reads | bigint | Минимальное количество физических операций чтения, которое эта функция когда-либо выполняла во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
max_physical_reads | bigint | Максимальное количество физических операций чтения, которое эта функция когда-либо выполняла во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
total_logical_writes | bigint | Общее количество логических операций записи, выполняемых выполнением этой функции, так как она была скомпилирована. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
last_logical_writes | bigint | Количество страниц в буферном пуле, загрязненных во время последнего выполнения плана. Если страница уже является «грязной» (т. е. измененной), операции записи не учитываются. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
min_logical_writes | bigint | Минимальное количество логических записей, которые эта функция когда-либо выполняла во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
max_logical_writes | bigint | Максимальное количество логических записей, которые эта функция когда-либо выполняла во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
total_logical_reads | bigint | Общее количество логических операций чтения, выполняемых выполнением этой функции с момента компиляции. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
last_logical_reads | bigint | Количество логических операций чтения, выполненных при последнем выполнении функции. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
min_logical_reads | bigint | Минимальное количество логических считывает, что эта функция когда-либо выполнялась во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
max_logical_reads | bigint | Максимальное количество логических считывает, что эта функция когда-либо выполнялась во время одного выполнения. Значение всегда равно 0 при запросе оптимизированной для памяти таблицы. |
total_elapsed_time | bigint | Общее время, прошедшее в микросекундах, для завершения выполнения этой функции. |
last_elapsed_time | bigint | Истеклое время в микросекундах для последней завершенной выполнения этой функции. |
min_elapsed_time | bigint | Минимальное истекшее время в микросекундах для любого завершенного выполнения этой функции. |
max_elapsed_time | bigint | Максимальное время, прошедшее в микросекундах, для любого завершенного выполнения этой функции. |
total_page_server_reads | bigint | Общее количество операций чтения сервера страницы, выполняемого выполнением этой функции, так как она была скомпилирована. Область применения: База данных SQL Azure гипермасштабирование. |
last_page_server_reads | bigint | Число операций чтения сервера страницы при последнем выполнении функции. Область применения: База данных SQL Azure гипермасштабирование. |
min_page_server_reads | bigint | Минимальное количество серверов страниц считывает, что эта функция когда-либо выполнялась во время одного выполнения. Область применения: База данных SQL Azure гипермасштабирование. |
max_page_server_reads | bigint | Максимальное количество серверов страницы считывает, что эта функция когда-либо выполнялась во время одного выполнения. Область применения: База данных SQL Azure гипермасштабирование. |
Разрешения
На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE
.
Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##
роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE
в базе данных или членство в роли сервера ##MS_ServerStateReader##
.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.
Примеры
В следующем примере возвращаются сведения о десяти функциях, определяемых средним временем.
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)