sys.dm_exec_cached_plans (SQL Bertransaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
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.
Dalam 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. Refcounts harus setidaknya 1 agar entri berada di cache. |
| usecounts | int | Berapa kali objek cache telah dicari. Tidak dinaikkan saat kueri berparameter menemukan rencana di cache. Dapat dinaikkan beberapa kali saat menggunakan showplan. |
| size_in_bytes | int | Jumlah byte yang digunakan 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 cache dan dengan sys.dm_os_memory_cache_entries_entries untuk mendapatkan biaya penembolokan entri. |
| cacheobjtype | nvarchar(34) | Jenis objek dalam cache. Nilainya bisa menjadi salah satu dari yang berikut ini: Paket yang Dikompilasi Stub Paket yang Dikompilasi Pohon Uraikan Extended Proc CLR Compiled Func CLR Compiled 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: Prosedur filter replikasi Pemicu: Pemicu Tampilan: Tampilan Default: Default UsrTab: Tabel pengguna SysTab: Tabel sistem Periksa: BATASAN CEK Aturan: Aturan |
| plan_handle | varbinary(64) | Pengidentifikasi untuk paket dalam memori. Pengidentifikasi ini bersifat sementara dan tetap konstan hanya saat rencana 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 diperkirakan. |
| 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 Azure Active Directory, 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.
Contoh
A. Mengembalikan teks batch dari entri cache yang digunakan kembali
Contoh berikut mengembalikan teks SQL dari semua entri yang di-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 (SQL Transact).
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 rencana yang dikompilasi yang di-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 (SQL Transact)
Tampilan dan Fungsi Manajemen Dinamis Terkait Eksekusi (transact-SQL)
sys.dm_exec_query_plan (SQL Bertransaksi)
sys.dm_exec_plan_attributes (SQL Bertransaksi)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_os_memory_objects (SQL Bertransaksi)
sys.dm_os_memory_cache_entries (SQL Bertransaksi)
FROM (Transact-SQL)