Sdílet prostřednictvím


sys.dm_exec_function_stats (Transact-SQL)

Platí na: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Vrátí agregovanou statistiku výkonu pro funkce uložené v mezipaměti. Zobrazení vrátí jeden řádek pro každý plán funkce uložené v mezipaměti a doba života řádku je stejná, dokud funkce zůstane uložená v mezipaměti. Při odebrání funkce z mezipaměti se z tohoto zobrazení odstraní odpovídající řádek. V té době je událost trasování SQL statistik výkonu vyvolána podobně jako sys.dm_exec_query_stats. Vrátí informace o skalárních funkcích, včetně funkcí v paměti a skalárních funkcí CLR. Nevrací informace o funkcích s hodnotami tabulky a o skalárních funkcích, které jsou vloženy pomocí inliningu skalárního UDF.

V Azure SQL Database nemůžou zobrazení dynamické správy zveřejnit informace, které by ovlivnily zahrnutí databáze nebo zpřístupňují informace o jiných databázích, ke kterým má uživatel přístup. Aby se zabránilo zveřejnění těchto informací, vyfiltruje se každý řádek obsahující data, která nepatří do připojeného tenanta.

Poznámka:

Výsledky sys.dm_exec_function_stats se můžou lišit při každém spuštění, protože data odrážejí pouze dokončené dotazy, a ne ty, které jsou stále v letu.

Název sloupce Datový typ Description
database_id int ID databáze, ve kterém se funkce nachází.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.
object_id int Identifikační číslo objektu funkce.
type char(2) Typ objektu: FN = skalární hodnotné funkce
type_desc nvarchar(60) Popis typu objektu: SQL_SCALAR_FUNCTION
sql_handle varbinary(64) Dá se použít ke korelaci s dotazy v sys.dm_exec_query_stats , které byly provedeny z této funkce.
plan_handle varbinary(64) Identifikátor plánu v paměti. Tento identifikátor je přechodný a zůstává konstantní pouze v době, kdy plán zůstává v mezipaměti. Tuto hodnotu lze použít s sys.dm_exec_cached_plans zobrazením dynamické správy.

Bude vždy 0x000, když nativně zkompilovaná funkce dotazuje tabulku optimalizovanou pro paměť.
cached_time datetime Čas přidání funkce do mezipaměti
poslední_čas_spuštění datetime Čas posledního spuštění funkce
počet_provedení bigint Počet spuštění funkce od poslední kompilace.
celkový_čas_pracovníka bigint Celková doba procesoru v mikrosekundách, která byla spotřebována spuštěním této funkce od kompilace.

U nativně kompilovaných funkcí nemusí být total_worker_time přesné, pokud mnoho spuštění trvá méně než 1 milisekundu.
last_worker_time bigint Čas procesoru v mikrosekundách, který byl spotřebován při posledním spuštění funkce. 1
min_worker_time bigint Minimální doba procesoru v mikrosekundách, kterou tato funkce kdy spotřebovala během jednoho spuštění. 1
max_worker_time bigint Maximální doba procesoru v mikrosekundách, kterou tato funkce kdy spotřebovala během jednoho spuštění. 1
celkový_počet_fyzických_čtení bigint Celkový počet fyzických čtení provedených spuštěním této funkce od kompilace.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
poslední_fyzické_čtení bigint Počet fyzických čtení provedených při posledním spuštění funkce.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
min_physical_reads bigint Minimální počet fyzických čtení, které tato funkce kdy provedla během jednoho spuštění.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
max_physical_reads bigint Maximální počet fyzických čtení, které tato funkce kdy provedla během jednoho spuštění.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
total_logical_writes bigint Celkový počet logických zápisů provedených spuštěním této funkce od kompilace.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
poslední_logické_zápisy bigint Počet stránek fondu vyrovnávací paměti, které se při posledním provedení plánu pošpinily. Pokud je stránka již zašpiněná (změněna), nebudou se počítat žádné zápisy.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
min_logical_writes bigint Minimální počet logických zápisů, které tato funkce kdy prováděla během jednoho spuštění.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
max_logický_zápis bigint Maximální počet logických zápisů, které tato funkce kdy provedla během jednoho spuštění.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
total_logical_reads bigint Celkový počet logických čtení provedených spuštěním této funkce od kompilace.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
poslední_logické_čtení bigint Počet logických čtení provedených při posledním spuštění funkce.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
min_logical_reads bigint Minimální počet logických čtení, které kdy tato funkce provedla během jednoho spuštění.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
max_logical_reads bigint Maximální počet logických čtení, která tato funkce kdy provedla během jednoho vykonání.

Bude vždy 0 při dotazování na paměťově optimalizovanou tabulku.
total_elapsed_time bigint Celkový uplynulý čas v mikrosekundách pro dokončená spuštění této funkce.
poslední_uběhnutý_čas bigint Uplynulý čas v mikrosekundách pro naposledy dokončené provedení této funkce
minimální_uběhlý_čas bigint Minimální uplynulý čas v mikrosekundách pro jakékoli dokončené spuštění této funkce.
max_doba_trvání bigint Maximální uplynulý čas v mikrosekundách pro jakékoli dokončení provádění této funkce.
total_page_server_reads bigint Celkový počet čtení stránkového serveru provedených spuštěním této funkce od kompilace.

Platí pro: Azure SQL Database Hyperscale
poslední_čtení_stránky_serveru bigint Počet přečtení serverových stránek, který byl proveden při posledním spuštění funkce.

Platí pro: Azure SQL Database Hyperscale
min_page_server_reads bigint Minimální počet čtení serveru, které tato funkce kdy provedla během jednoho spuštění.

Platí pro: Azure SQL Database Hyperscale
max_page_server_reads bigint Maximální počet načtení stránkového serveru, které tato funkce kdy provedla během jednoho spuštění.

Platí pro: Azure SQL Database Hyperscale

Povolení

Na SQL Serveru a službě SQL Managed Instance vyžaduje VIEW SERVER STATE oprávnění.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Examples

Následující příklad vrátí informace o prvních deseti funkcích identifikovaných podle průměrného uplynulého času.

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;  

Viz také

zobrazení a funkce související se spouštěním dynamické správy (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)