Udostępnij za pomocą


sys.dm_exec_function_stats (Transact-SQL)

Dotyczy do: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Zwraca zagregowane statystyki wydajności dla funkcji buforowanych. Widok zwraca jeden wiersz dla każdego buforowanego planu funkcji, a okres istnienia wiersza jest tak długo, jak funkcja pozostaje buforowana. Gdy funkcja zostanie usunięta z pamięci podręcznej, odpowiedni wiersz zostanie wyeliminowany z tego widoku. W tym czasie uruchamiane jest zdarzenie śledzenia SQL dotyczące statystyk wydajności, podobnie jak sys.dm_exec_query_stats. Zwraca informacje o funkcjach skalarnych, w tym o funkcjach w pamięci i funkcjach skalarnych CLR. Nie zwraca informacji o funkcjach wartości tabeli i o funkcjach skalarnych, które są podkreślone za pomocą wbudowanej funkcji UDF skalarnej.

W usłudze Azure SQL Database dynamiczne widoki zarządzania nie mogą ujawniać informacji, które mają wpływ na zawieranie bazy danych lub uwidacznianie informacji o innych bazach danych, do których użytkownik ma dostęp. Aby uniknąć ujawniania tych informacji, każdy wiersz zawierający dane, które nie należą do połączonej dzierżawy, jest filtrowany.

Uwaga / Notatka

Wyniki sys.dm_exec_function_stats mogą się różnić w zależności od wykonania, ponieważ dane odzwierciedlają tylko ukończone zapytania, a nie te nadal w locie.

Nazwa kolumny Typ danych Description
database_id int Identyfikator bazy danych, w której znajduje się funkcja.

W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego.
object_id int Numer identyfikacyjny obiektu funkcji.
type char(2) Typ obiektu: FN = funkcje wartości skalarnych
type_desc nvarchar(60) Opis typu obiektu: SQL_SCALAR_FUNCTION
sql_handle varbinary(64) Może to służyć do korelowania z zapytaniami w sys.dm_exec_query_stats , które zostały wykonane z tej funkcji.
plan_handle varbinary(64) Identyfikator planu w pamięci. Ten identyfikator jest przejściowy i pozostaje stały tylko wtedy, gdy plan pozostaje w pamięci podręcznej. Ta wartość może być używana z dynamicznym widokiem zarządzania sys.dm_exec_cached_plans.

Zawsze będzie 0x000, gdy natywnie skompilowana funkcja wysyła zapytanie do tabeli zoptymalizowanej pod kątem pamięci.
cached_time datetime Czas dodania funkcji do pamięci podręcznej.
last_execution_time datetime Czas ostatniego wykonania funkcji.
liczba_wykonań bigint Liczba wykonanych funkcji od czasu ostatniego skompilowania.
total_worker_time bigint Łączna ilość czasu procesora CPU w mikrosekundach, która została zużyta przez wykonania tej funkcji od czasu, gdy została skompilowana.

W przypadku natywnie skompilowanych funkcji total_worker_time może nie być dokładne, jeśli wiele wykonań trwa mniej niż 1 milisekund.
czas_ostatniego_pracownika bigint Czas CPU, w mikrosekundach, który został zużyty przy ostatnim wykonywaniu funkcji. 1
min_worker_time bigint Minimalny czas procesora CPU w mikrosekundach, który ta funkcja kiedykolwiek zużyła podczas pojedynczego wykonywania. 1
max_worker_time bigint Maksymalny czas procesora CPU w mikrosekundach, który kiedykolwiek zużywał ta funkcja podczas pojedynczego wykonywania. 1
total_physical_reads (całkowita liczba fizycznych odczytów) bigint Łączna liczba odczytów fizycznych wykonanych przez tę funkcję od momentu jej kompilacji.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
ostatnie_odczyty_fizyczne bigint Liczba odczytów fizycznych wykonanych podczas ostatniego wykonania funkcji.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
minimalne_fizyczne_odczyty bigint Minimalna liczba odczytów fizycznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
max_physical_reads bigint Maksymalna liczba odczytów fizycznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
total_logical_writes bigint Łączna liczba zapisów logicznych wykonywanych przez uruchomienia tej funkcji od chwili jej skompilowania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
last_logical_writes bigint Liczba stron puli buforowej zabrudzonych podczas ostatniego wykonania planu. Jeśli strona jest już zanieczyszczona (zmodyfikowana), nie są zliczane żadne zapisy.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
min_logical_writes bigint Minimalna liczba zapisów logicznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
max_logical_writes bigint Maksymalna liczba zapisów logicznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
total_logical_reads bigint Łączna liczba odczytów logicznych wykonanych przez uruchomienia tej funkcji od czasu jej skompilowania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
last_logical_reads bigint Liczba odczytów logicznych wykonanych podczas ostatniego wykonywania funkcji.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
min_logical_reads bigint Minimalna liczba odczytów logicznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
max_logical_reads bigint Maksymalna liczba odczytów logicznych, które kiedykolwiek wykonała ta funkcja podczas pojedynczego wykonywania.

Wynik zawsze wyniesie 0 przy zapytaniach w tabeli zoptymalizowanej pod kątem pamięci.
total_elapsed_time bigint Całkowity czas, który upłynął w mikrosekundach dla zakończonych wykonań tej funkcji.
last_elapsed_time bigint Czas, który upłynął, w mikrosekundach, dla ostatnio ukończonego wykonywania tej funkcji.
min_czas_upływu bigint Minimalny czas, który upłynął, w mikrosekundach, dla każdego zakończonego wykonania tej funkcji.
max_elapsed_time (maksymalny czas upłynięty) bigint Maksymalny czas, który upłynął, w mikrosekundach, dla dowolnego ukończonego wykonania tej funkcji.
total_page_server_reads bigint Łączna liczba odczytów serwera stron wykonanych przez tę funkcję od czasu, gdy została skompilowana.

Dotyczy: Hiperskala usługi Azure SQL Database.
ostatnie_odczyty_serwera_stron bigint Liczba odczytów na serwerze stron dokonanych podczas ostatniego wykonania funkcji.

Dotyczy: Hiperskala usługi Azure SQL Database.
min_page_server_reads bigint Minimalna liczba odczytów z serwera stron, które ta funkcja kiedykolwiek wykonała podczas pojedynczego wykonania.

Dotyczy: Hiperskala usługi Azure SQL Database.
max_page_server_reads bigint Maksymalna liczba odczytów serwera stron, które ta funkcja kiedykolwiek wykonała podczas pojedynczego uruchomienia.

Dotyczy: Hiperskala usługi Azure SQL Database.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Przykłady

Poniższy przykład zwraca informacje o dziesięciu najlepszych funkcjach zidentyfikowanych na podstawie średniego czasu wykonania.

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;  

Zobacz też

Dynamiczne widoki zarządzania i funkcje związane z wykonywaniem (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)