sys.dm_exec_cached_plans (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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)