DBCC FREEPROCCACHE (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Menghapus semua elemen dari cache paket, menghapus paket tertentu dari cache paket dengan menentukan handel rencana atau handel SQL, atau menghapus semua entri cache yang terkait dengan kumpulan sumber daya tertentu.

Catatan

DBCC FREEPROCCACHE tidak menghapus statistik eksekusi untuk prosedur tersimpan yang dikompilasi secara asli. Cache prosedur tidak berisi informasi tentang prosedur tersimpan yang dikompilasi secara asli. Setiap statistik eksekusi yang dikumpulkan dari eksekusi prosedur akan muncul dalam DMV statistik eksekusi: sys.dm_exec_procedure_stats (Transact-SQL) dan sys.dm_exec_query_plan (Transact-SQL).

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

Sintaks untuk SQL Server:

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]  

Sintaks untuk Azure Synapse Analytics dan Analytics Platform System (PDW):

DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ] 
     [ WITH NO_INFOMSGS ]   
[;]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

( { plan_handle | sql_handle | pool_name } )
plan_handle secara unik mengidentifikasi rencana kueri untuk batch yang telah dijalankan dan yang rencananya berada di cache rencana. plan_handle adalah varbinary(64) dan dapat diperoleh dari objek manajemen dinamis berikut:

sql_handle adalah handel SQL dari batch yang akan dibersihkan. sql_handle adalah varbinary(64) dan dapat diperoleh dari objek manajemen dinamis berikut:

pool_name adalah nama kumpulan sumber daya Resource Governor. pool_name adalah sysname dan dapat diperoleh dengan mengkueri tampilan manajemen dinamis sys.dm_resource_governor_resource_pools .
Untuk mengaitkan grup beban kerja Resource Governor dengan kumpulan sumber daya, kueri tampilan manajemen dinamis sys.dm_resource_governor_workload_groups . Untuk informasi tentang grup beban kerja untuk sesi, kueri tampilan manajemen dinamis sys.dm_exec_sessions .

DENGAN NO_INFOMSGS
Menyembunyikan semua pesan informasi.

COMPUTE
Hapus menyeluruh cache rencana kueri dari setiap simpul Komputasi. Ini adalah nilai default.

SEMUA
Hapus menyeluruh cache rencana kueri dari setiap simpul Komputasi dan dari simpul Kontrol.

Catatan

Dimulai dengan SQL Server 2016 (13.x), ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE untuk menghapus cache prosedur (rencana) untuk database dalam cakupan.

Keterangan

Gunakan DBCC FREEPROCCACHE untuk menghapus cache paket dengan hati-hati. Menghapus cache prosedur (rencana) menyebabkan semua rencana dikeluarkan, dan eksekusi kueri masuk akan mengkompilasi rencana baru, alih-alih menggunakan kembali rencana yang di-cache sebelumnya.

Ini dapat menyebabkan penurunan performa kueri secara tiba-tiba dan sementara saat jumlah kompilasi baru meningkat. Untuk setiap cachestore yang dibersihkan dalam cache paket, log kesalahan SQL Server akan berisi pesan informasi berikut:

SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.

Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.

Operasi konfigurasi ulang berikut juga menghapus cache prosedur:

  • jumlah wadah cache pemeriksaan akses
  • kuota cache pemeriksaan akses
  • clr diaktifkan
  • ambang biaya untuk paralelisme
  • rantai kepemilikan lintas db
  • indeks membuat memori
  • tingkat paralelisme maks
  • memori server maks
  • ukuran repl teks maks
  • utas pekerja maks
  • memori min per kueri
  • memori server min
  • batas biaya gubernur kueri
  • kueri tunggu
  • batas waktu kueri jarak jauh
  • opsi pengguna

Tataan Hasil

Ketika klausa WITH NO_INFOMSGS tidak ditentukan, DBCC FREEPROCCACHE mengembalikan: "Eksekusi DBCC selesai. Jika DBCC mencetak pesan kesalahan, hubungi administrator sistem Anda."

Izin

Berlaku untuk: SQL Server, Analytics Platform System (PDW)

  • Memerlukan izin UBAH STATUS SERVER pada server.

Berlaku untuk: Azure Synapse Analytics

  • Memerlukan keanggotaan dalam peran server tetap DB_OWNER.

Keterangan Umum untuk Azure Synapse Analytics and Analytics Platform System (PDW)

Beberapa perintah DBCC FREEPROCCACHE dapat dijalankan secara bersamaan. Di Azure Synapse Analytics atau Analytics Platform System (PDW), menghapus cache paket dapat menyebabkan penurunan performa kueri sementara karena kueri masuk mengkompilasi paket baru, alih-alih menggunakan kembali paket yang di-cache sebelumnya.

DBCC FREEPROCCACHE (COMPUTE) hanya menyebabkan SQL Server mengolah ulang kueri ketika dijalankan pada simpul Komputasi. Ini tidak menyebabkan Azure Synapse Analytics atau Analytics Platform System (PDW) mengkompilasi ulang rencana kueri paralel yang dihasilkan pada simpul Kontrol. DBCC FREEPROCCACHE dapat dibatalkan selama eksekusi.

Batasan dan Pembatasan untuk Azure Synapse Analytics dan Sistem Platform Analitik (PDW)

DBCC FREEPROCCACHE tidak dapat berjalan dalam transaksi. DBCC FREEPROCCACHE tidak didukung dalam pernyataan EXPLAIN.

Metadata untuk Azure Synapse Analytics dan Analytics Platform System (PDW)

Baris baru ditambahkan ke tampilan sistem sys.pdw_exec_requests saat DBCC FREEPROCCACHE dijalankan.

Contoh: SQL Server

J. Menghapus rencana kueri dari cache paket

Contoh berikut menghapus rencana kueri dari cache paket dengan menentukan handel rencana kueri. Untuk memastikan kueri contoh ada di cache rencana, kueri pertama kali dijalankan. Tampilan sys.dm_exec_cached_plans manajemen dinamis dan sys.dm_exec_sql_text dikueri untuk mengembalikan handel rencana untuk kueri.

Nilai handel paket dari kumpulan hasil kemudian disisipkan ke dalam DBCC FREEPROCACHE pernyataan untuk menghapus hanya paket tersebut dari cache paket.

USE AdventureWorks2012;  
GO  
SELECT * FROM Person.Address;  
GO  
SELECT plan_handle, st.text  
FROM sys.dm_exec_cached_plans   
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st  
WHERE text LIKE N'SELECT * FROM Person.Address%';  
GO  

Berikut adalah tataan hasil.

plan_handle                                         text  
--------------------------------------------------  -----------------------------  
0x060006001ECA270EC0215D05000000000000000000000000  SELECT * FROM Person.Address;  
  
(1 row(s) affected)
-- Remove the specific plan from the cache.  
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);  
GO  

B. Menghapus semua paket dari cache paket

Contoh berikut menghapus semua elemen dari cache paket. Klausa WITH NO_INFOMSGS ditentukan untuk mencegah pesan informasi ditampilkan.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;  

C. Menghapus semua entri cache yang terkait dengan kumpulan sumber daya

Contoh berikut menghapus semua entri cache yang terkait dengan kumpulan sumber daya tertentu. Tampilan sys.dm_resource_governor_resource_pools pertama kali dikueri untuk mendapatkan nilai untuk pool_name.

SELECT * FROM sys.dm_resource_governor_resource_pools;  
GO  
DBCC FREEPROCCACHE ('default');  
GO  

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

D. Contoh Sintaks Dasar DBCC FREEPROCCACHE

Contoh berikut menghapus semua cache rencana kueri yang ada dari simpul Komputasi. Meskipun konteks diatur ke UserDbSales, cache rencana kueri simpul Komputasi untuk semua database akan dihapus. Klausa WITH NO_INFOMSGS mencegah pesan informasi muncul dalam hasil.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;

Contoh berikut memiliki hasil yang sama dengan contoh sebelumnya, kecuali bahwa pesan informasi akan ditampilkan dalam hasil.

USE UserDbSales;  
DBCC FREEPROCCACHE (COMPUTE);  

Ketika pesan informasi diminta dan eksekusi berhasil, hasil kueri akan memiliki satu baris per simpul Komputasi.

E. Memberikan Izin untuk menjalankan DBCC FREEPROCCACHE

Contoh berikut memberikan izin login David untuk menjalankan DBCC FREEPROCCACHE.

GRANT ALTER SERVER STATE TO David; 
GO

Lihat juga

DBCC (Transact-SQL)
Resource Governor
ALTER DATABASE SCOPED CONFIGURATION (T-SQL)