sys.dm_exec_function_stats (T-SQL)
Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Database Azure SQL Managed Instance yang lebih baru
Mengembalikan statistik performa agregat untuk fungsi yang di-cache. Tampilan mengembalikan satu baris untuk setiap rencana fungsi yang di-cache, dan masa pakai baris selama fungsi tetap di-cache. Ketika fungsi dihapus dari cache, baris yang sesuai dihilangkan dari tampilan ini. Pada saat itu, peristiwa pelacakan SQL Statistik Performa dinaikkan mirip dengan sys.dm_exec_query_stats. Mengembalikan informasi tentang fungsi skalar, termasuk fungsi dalam memori dan fungsi skalar CLR. Tidak mengembalikan informasi tentang fungsi bernilai tabel, dan tentang fungsi skalar yang sebaris dengan Scalar UDF Inlining.
Di Azure SQL Database, tampilan manajemen dinamis tidak dapat mengekspos informasi yang akan memengaruhi penahanan database atau mengekspos informasi tentang database lain yang dapat diakses pengguna. Untuk menghindari mengekspos informasi ini, setiap baris yang berisi data yang bukan milik penyewa yang tersambung difilter.
Catatan
Hasil sys.dm_exec_function_stats dapat bervariasi menurut setiap eksekusi karena data hanya mencerminkan kueri yang sudah selesai, dan bukan yang masih dalam penerbangan.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_id | int | ID database tempat fungsi berada. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. |
object_id | int | Nomor identifikasi objek fungsi. |
jenis | char(2) | Jenis objek: FN = Fungsi bernilai skalar |
type_desc | nvarchar(60) | Deskripsi jenis objek: SQL_SCALAR_FUNCTION |
sql_handle | varbinary(64) | Ini dapat digunakan untuk berkorelasi dengan kueri dalam sys.dm_exec_query_stats yang dijalankan dari dalam fungsi ini. |
plan_handle | varbinary(64) | Pengidentifikasi untuk paket dalam memori. Pengidentifikasi ini bersifat sementara dan tetap konstan hanya saat paket tetap berada di cache. Nilai ini dapat digunakan dengan tampilan manajemen dinamis sys.dm_exec_cached_plans . Akan selalu 0x000 ketika fungsi yang dikompilasi secara asli meminta tabel yang dioptimalkan memori. |
cached_time | datetime | Waktu di mana fungsi ditambahkan ke cache. |
last_execution_time | datetime | Terakhir kali fungsi dijalankan. |
execution_count | bigint | Berapa kali fungsi telah dijalankan sejak terakhir dikompilasi. |
total_worker_time | bigint | Jumlah total waktu CPU, dalam mikro detik, yang dikonsumsi oleh eksekusi fungsi ini sejak dikompilasi. Untuk fungsi yang dikompilasi secara asli, total_worker_time mungkin tidak akurat jika banyak eksekusi membutuhkan waktu kurang dari 1 milidetik. |
last_worker_time | bigint | Waktu CPU, dalam mikro detik, yang dikonsumsi terakhir kali fungsi dijalankan. 1 |
min_worker_time | bigint | Waktu CPU minimum, dalam mikro detik, yang pernah dikonsumsi fungsi ini selama satu eksekusi. 1 |
max_worker_time | bigint | Waktu CPU maksimum, dalam mikrostik, bahwa fungsi ini pernah digunakan selama satu eksekusi. 1 |
total_physical_reads | bigint | Jumlah total bacaan fisik yang dilakukan oleh eksekusi fungsi ini sejak dikompilasi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
last_physical_reads | bigint | Jumlah bacaan fisik yang dilakukan terakhir kali fungsi dijalankan. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
min_physical_reads | bigint | Jumlah minimum bacaan fisik yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
max_physical_reads | bigint | Jumlah maksimum pembacaan fisik yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
total_logical_writes | bigint | Jumlah total penulisan logis yang dilakukan oleh eksekusi fungsi ini sejak dikompilasi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
last_logical_writes | bigint | Jumlah jumlah halaman kumpulan buffer yang dikoreksi terakhir kali paket dijalankan. Jika halaman sudah kotor (dimodifikasi) tidak ada penulisan yang dihitung. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
min_logical_writes | bigint | Jumlah minimum penulisan logis yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
max_logical_writes | bigint | Jumlah maksimum penulisan logis yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
total_logical_reads | bigint | Jumlah total bacaan logis yang dilakukan oleh eksekusi fungsi ini sejak dikompilasi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
last_logical_reads | bigint | Jumlah bacaan logis yang dilakukan terakhir kali fungsi dijalankan. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
min_logical_reads | bigint | Jumlah minimum pembacaan logis yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
max_logical_reads | bigint | Jumlah maksimum pembacaan logis yang pernah dilakukan fungsi ini selama satu eksekusi. Akan selalu 0 mengkueri tabel yang dioptimalkan memori. |
total_elapsed_time | bigint | Total waktu yang berlalu, dalam mikrostik, untuk eksekusi fungsi ini yang selesai. |
last_elapsed_time | bigint | Waktu yang berlalu, dalam mikrostik, untuk eksekusi fungsi ini yang paling baru selesai. |
min_elapsed_time | bigint | Waktu minimum yang berlalu, dalam mikrostik, untuk setiap eksekusi fungsi ini yang telah selesai. |
max_elapsed_time | bigint | Waktu maksimum yang berlalu, dalam mikrostik, untuk setiap eksekusi fungsi ini yang telah selesai. |
total_page_server_reads | bigint | Jumlah total pembacaan server halaman yang dilakukan oleh eksekusi fungsi ini sejak dikompilasi. Berlaku Untuk: Azure SQL Database Hyperscale. |
last_page_server_reads | bigint | Jumlah pembacaan server halaman yang dilakukan terakhir kali fungsi dijalankan. Berlaku Untuk: Azure SQL Database Hyperscale. |
min_page_server_reads | bigint | Jumlah minimum server halaman membaca bahwa fungsi ini pernah dilakukan selama satu eksekusi. Berlaku Untuk: Azure SQL Database Hyperscale. |
max_page_server_reads | bigint | Jumlah maksimum server halaman membaca bahwa fungsi ini pernah dilakukan selama satu eksekusi. Berlaku Untuk: Azure SQL Database Hyperscale. |
Izin
Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE
izin.
Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE
pada database, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Contoh
Contoh berikut mengembalikan informasi tentang sepuluh fungsi teratas yang diidentifikasi oleh waktu rata-rata yang berlalu.
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;
Lihat Juga
Tampilan dan Fungsi Manajemen Dinamis Terkait Eksekusi (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (T-SQL)
sys.dm_exec_procedure_stats (T-SQL)