sys.dm_exec_cached_plans (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Mengembalikan baris untuk setiap rencana kueri yang di-cache oleh SQL Server untuk eksekusi kueri yang lebih cepat. Anda dapat menggunakan tampilan manajemen dinamis ini untuk menemukan rencana kueri yang di-cache, teks kueri yang di-cache, jumlah memori yang diambil oleh paket yang di-cache, dan jumlah penggunaan kembali paket yang di-cache.
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. Selain itu, nilai dalam kolom memory_object_address dan pool_id difilter; nilai kolom diatur ke NULL.
Catatan
Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_exec_cached_plans
. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
bucketid | int | ID wadah hash tempat entri di-cache. Nilai menunjukkan rentang dari 0 hingga ukuran tabel hash untuk jenis cache. Untuk cache SQL Plans dan Object Plans, ukuran tabel hash dapat mencapai 10007 pada sistem 32-bit dan hingga 40009 pada sistem 64-bit. Untuk cache Pohon Terikat, ukuran tabel hash dapat mencapai 1009 pada sistem 32-bit dan hingga 4001 pada sistem 64-bit. Untuk cache Extended Stored Procedures, ukuran tabel hash dapat mencapai 127 pada sistem 32-bit dan 64-bit. |
refcounts | int | Jumlah objek cache yang mereferensikan objek cache ini. Refcount harus setidaknya 1 agar entri berada di cache. |
usecounts | int | Berapa kali objek cache telah dicari. Tidak mengalami peningkatan saat kueri berparameter menemukan rencana di cache. Dapat dinaikkan beberapa kali saat menggunakan showplan. |
size_in_bytes | int | Jumlah byte yang dikonsumsi oleh objek cache. |
memory_object_address | varbinary(8) | Alamat memori entri yang di-cache. Nilai ini dapat digunakan dengan sys.dm_os_memory_objects untuk mendapatkan perincian memori dari rencana yang di-cache dan dengan sys.dm_os_memory_cache_entries_entries untuk mendapatkan biaya penembolokan entri. |
cacheobjtype | nvarchar(34) | Jenis objek dalam cache. Nilainya dapat berupa salah satu dari berikut ini: Paket yang Dikompilasi Stub Paket yang Dikompilasi Uraikan Pohon Proc yang Diperluas CLR Dikompilasi Func CLR Dikompilasi Proc |
objtype | nvarchar(16) | Jenis objek. Di bawah ini adalah nilai yang mungkin dan deskripsi yang sesuai. Proc: Prosedur tersimpan Disiapkan: Pernyataan yang disiapkan Adhoc: Kueri ad hoc. Mengacu pada Transact-SQL yang dikirimkan sebagai peristiwa bahasa dengan menggunakan osql atau sqlcmd alih-alih sebagai panggilan prosedur jarak jauh. ReplProc: Replication-filter-procedure Pemicu: Pemicu Tampilan: Tampilan Default: Default UsrTab: Tabel pengguna SysTab: Tabel sistem Pemeriksaan: PERIKSA batasan Aturan: Aturan |
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 fungsi manajemen dinamis berikut: sys.dm_exec_sql_text sys.dm_exec_query_plan sys.dm_exec_plan_attributes |
pool_id | int | ID kumpulan sumber daya tempat penggunaan memori paket ini diperhitungkan. |
pdw_node_id | int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) Pengidentifikasi untuk simpul tempat distribusi ini aktif. |
1
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
J. Mengembalikan teks batch entri yang di-cache yang digunakan kembali
Contoh berikut mengembalikan teks SQL dari semua entri cache yang telah digunakan lebih dari sekali.
SELECT usecounts, cacheobjtype, objtype, text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE usecounts > 1
ORDER BY usecounts DESC;
GO
B. Mengembalikan rencana kueri untuk semua pemicu yang di-cache
Contoh berikut mengembalikan rencana kueri dari semua pemicu yang di-cache.
SELECT plan_handle, query_plan, objtype
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
WHERE objtype ='Trigger';
GO
C. Mengembalikan opsi SET tempat paket dikompilasi
Contoh berikut mengembalikan opsi SET tempat paket dikompilasi. sql_handle
Untuk rencana juga dikembalikan. Operator PIVOT digunakan untuk menghasilkan set_options
atribut dan sql_handle
sebagai kolom daripada sebagai baris. Untuk informasi selengkapnya tentang nilai yang dikembalikan di set_options
, lihat sys.dm_exec_plan_attributes (Transact-SQL).
SELECT plan_handle, pvt.set_options, pvt.sql_handle
FROM (
SELECT plan_handle, epa.attribute, epa.value
FROM sys.dm_exec_cached_plans
OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
WHERE cacheobjtype = 'Compiled Plan'
) AS ecpa
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;
GO
D. Mengembalikan perincian memori dari semua paket yang dikompilasi cache
Contoh berikut mengembalikan perincian memori yang digunakan oleh semua paket yang dikompilasi dalam cache.
SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject,
omo.memory_object_address, type, page_size_in_bytes
FROM sys.dm_exec_cached_plans AS ecp
JOIN sys.dm_os_memory_objects AS omo
ON ecp.memory_object_address = omo.memory_object_address
OR ecp.memory_object_address = omo.parent_address
WHERE cacheobjtype = 'Compiled Plan';
GO
Lihat Juga
Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Tampilan dan Fungsi Manajemen Dinamis Terkait Eksekusi (Transact-SQL)
sys.dm_exec_query_plan (T-SQL)
sys.dm_exec_plan_attributes (T-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_os_memory_objects (T-SQL)
sys.dm_os_memory_cache_entries (T-SQL)
FROM (Transact-SQL)