ความแตกต่างระหว่าง FreeProcCache และ FreeSystemCache


12

ขณะนี้ฉันรันDBCC FREEPROCCACHEเมื่อฉันต้องการลบข้อมูลออกจากบัฟเฟอร์พูลระหว่างการรันเคียวรี SQL แต่ผมได้รับการตรวจสอบนี้ Technet DBCC FREESYSTEMCACHEอ้างอิงบทความ แคชอะไรที่ไม่FREESYSTEMCACHEเช็ดFREEPROCCACHE?

คำตอบ:


25

FREESYSTEMCACHE เก็บแคชอะไรที่ FREEPROCCACHE ไม่ใช้

มีแคชระบบจำนวนมากใน SQL Server ฉันหมายถึง SQL 2008R2 (ตามที่ฉันทดสอบ)

แบบสอบถามด้านล่างจะส่งคืนแคชทั้งหมดที่มี:

--- 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

ดังนั้นสำหรับเช่นคุณต้องการล้างแคชทั้งหมดที่คุณจะทำงาน

DBCC FREESYSTEMCACHE ('ALL')

เพื่อล้างแคชเฉพาะที่คุณสามารถเรียกใช้ได้

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)

เมื่อใช้ FREEPROCCACHE คุณจะไม่สามารถล้างข้อมูลทั้งหมดที่กล่าวมาในระดับรายละเอียดนั้นได้

FREEPROCCACHE ==> จากBOL

ลบองค์ประกอบทั้งหมดออกจากแคชแผนลบแผนเฉพาะออกจากแคชแผนโดยระบุหมายเลขอ้างอิงแผนหรือหมายเลขอ้างอิง SQL หรือลบรายการแคชทั้งหมดที่เกี่ยวข้องกับกลุ่มทรัพยากรที่ระบุ

โดยพื้นฐานแล้วคุณอาจคิดว่ามันเกี่ยวข้องกับแคชแผนกับความสามารถในการลบแผนเฉพาะจากแคชด้วยหมายเลขอ้างอิงแผนและหรือชื่อกลุ่ม

Fun With DBCC FREEPROCCACHEเป็นบล็อกจาก Glenn Berry

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.