ฉันจะล้างตารางจากแคชของ SQL Server ได้อย่างไร


10

ฉันมีตารางไม่กี่ตารางในฐานข้อมูลของฉันที่ไม่ควรแคช

ฉันจะบอก SQL Server ไม่ให้แคชเพจของตารางหรือฉันจะล้างตารางเดียวจากแคชได้อย่างไร

การล้างแคชทั้งหมดไม่ใช่ตัวเลือก

ฉันใช้ SQL Server 2008 และ SQL Server 2008 R2


4
คุณตัดสินใจบนพื้นฐานที่ว่าไม่ควรแคตาราง?

3
หากตารางของคุณถูกแคชก็จะถูกสอบถาม หากเข้าถึงไม่บ่อยนักผู้จัดการหน่วยความจำเซิร์ฟเวอร์ SQL จะล้างข้อมูลออกตามความต้องการของวัตถุอื่น ๆ ในเวลาที่กำหนด เป้าหมายของคุณคืออะไร
John Sansom

4
@John - ไม่รู้หรอกว่าเป้าหมายของ OP คืออะไร แต่มีหลายครั้งที่สิ่งนี้จะเป็นประโยชน์ เช่นการสแกนแบบครั้งเดียวกับโต๊ะขนาดใหญ่โดยไม่ต้องล้างพูลบัฟเฟอร์

3
สาเหตุบางประการ: ตารางที่มีลำดับความสำคัญต่ำ, iis / rs บนเครื่องเดียวกับเซิร์ฟเวอร์ sql, การใช้พลังงาน ฯลฯ ที่สำคัญที่สุดคือบางตารางเป็นตารางที่มีลำดับความสำคัญต่ำซึ่งเกี่ยวข้องกับประสิทธิภาพของแอปพลิเคชันและสามารถอ่านได้อย่างปลอดภัยจากดิสก์ เมื่อใดก็ตามที่มีการเข้าถึง ด้วยการป้องกันตารางเหล่านั้นออกจากบัฟเฟอร์พูลการวิเคราะห์หน่วยความจำจะค่อนข้างง่ายขึ้น
Catalin Adler

1
@ user973156: รหัสและการออกแบบของคุณนั้นดีหรือไม่ที่ตอนนี้คุณเดาได้แค่อันดับ 2 ของ SQL Server ที่จะทำให้สิ่งต่าง ๆ ดีขึ้นหรือไม่?
gbn

คำตอบ:


12

ไม่มีวิธีการทำเช่นนี้

DBCC DROPCLEANBUFFERSไม่ยอมรับพารามิเตอร์ใด ๆ สำหรับฐานข้อมูลหรือวัตถุเฉพาะ ภายใน SQL Server สามารถทำได้ในระดับฐานข้อมูลอย่างไรก็ตามเมื่อฐานข้อมูลเป็นAUTO_CLOSEd เพจที่เกี่ยวข้องทั้งหมดจะถูกลบออกจากแคชบัฟเฟอร์

นอกจากนี้ภายใน SQL Server ยังสามารถทำเครื่องหมายหน้าบางอย่างเช่นพวกเขาจะเป็นคนแรกที่เตะออกโดยนักเขียนขี้เกียจ สิ่งนี้ถูกใช้โดย DMVs เช่นsys.dm_db_index_physical_statsเพื่อหลีกเลี่ยงการล้างบัฟเฟอร์พูลตามที่กล่าวถึงในบทความนี้แต่ฟังก์ชั่นนี้ไม่ได้เปิดเผยในทางใดทางหนึ่งของเรา (แม้ว่ามันอาจจะมีประโยชน์ที่จะระบุเช่นเดียวกันหากทำการสแกนครั้งเดียว ของตารางขนาดใหญ่ตัวอย่าง)


7

คุณไม่สามารถระบุว่าไม่ควรแคตารางที่เฉพาะเจาะจง อะไรทำให้คุณคิดว่าคุณไม่ต้องการตารางในแคช

SQL Server ทำการดำเนินการตามปกติทั้งหมดในพูลบัฟเฟอร์ดังนั้นหากคุณสามารถบอก SQL Server ไม่ให้โหลดตารางลงในแคชตารางนั้นจะไม่สามารถเข้าถึงได้สำหรับการดำเนินการ DML ปกติ

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