Perbedaan antara FreeProcCache dan FreeSystemCache

12

Saat ini saya menjalankan DBCC FREEPROCCACHEketika saya ingin menghapus informasi dari kumpulan buffer antara menjalankan query SQL. Namun, saya meninjau ini Technet artikel referensi DBCC FREESYSTEMCACHE. Cache apa yang FREESYSTEMCACHEdihapus itu FREEPROCCACHEtidak?

Sean Long
sumber

Jawaban:

25

Cache apa yang dihapus FREESYSTEMCACHE yang tidak dimiliki FREEPROCCACHE?

Ada banyak cache sistem yang tersedia di SQL Server. Saya merujuk ke SQL 2008R2 (seperti yang saya uji di atasnya).

Kueri di bawah ini akan mengembalikan semua cache yang tersedia:

--- ONLY for Educational purpose. Don't attempt to run on PROD !!

select 'DBCC freesystemcache ('+''''+name+''''+')'  from   sys.dm_os_memory_clerks group by name
-- 155 rows

jadi untuk misalnya Anda ingin menghapus semua cache yang akan Anda jalankan

DBCC FREESYSTEMCACHE ('ALL')

untuk membersihkan cache spesifik yang bisa Anda jalankan

DBCC FREESYSTEMCACHE ('userdatabase') -- cleans cache for specific user database
DBCC FREESYSTEMCACHE ('tempdb')  -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
.. and many more (see above 155 rows returned from sql server 2008R2)

Dengan menggunakan FREEPROCCACHE, Anda tidak akan dapat menghapus semua yang disebutkan di atas pada tingkat terperinci.

FREEPROCCACHE ==> dari BOL

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

Jadi pada dasarnya, Anda mungkin menganggapnya hanya terkait dengan cache Rencana dengan kemampuan untuk menghapus paket tertentu dari cache dengan pegangan paket dan atau nama kumpulan.

Bersenang-senang dengan DBCC FREEPROCCACHE adalah blog dari Glenn Berry

Kin Shah
sumber