ฉันใช้ฐานข้อมูลธุรกรรมสูง (โดยเฉลี่ยประมาณ 175 ธุรกรรม / นาทีมีการเพิ่มและลบบันทึกเกือบ 9 ล้านรายการต่อชั่วโมง)
จนถึงเมื่อเร็ว ๆ นี้สิ่งนี้ยังไม่ได้เป็นปัญหามากนักเนื่องจากเรามีการเพิ่มและลบเร็กคอร์ดที่ 7.5M แต่ด้วยข้อมูลล่าสุดที่ไหลเข้ามาการล้างข้อมูลผีจะไม่สามารถติดตามการล้างข้อมูลได้ พื้นที่ที่ไม่ได้ใช้บนตาราง / ดัชนี
ไม่กี่วันที่ผ่านมาเรามี 'พื้นที่ที่ไม่ได้ใช้' ถึง 53 GB ใน 16 ตาราง (โดยส่วนใหญ่เป็น 2 แห่ง) ดังนั้นผลที่ตามมาก็เริ่มมองเข้าไปในกระบวนการล้างผีเพื่อหามันทำงานทุกๆ 5 วินาทีและทำงานมากกว่า 10 หน้า
โซลูชันปัจจุบันของฉันคือเช้าตรู่ฉันกำลังรันสามเธรดของคำสั่งต่อไปนี้:
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
เพื่อติดตามงานค้างเมื่อคืนก่อน (เมื่องานลบส่วนใหญ่เกิดขึ้น)
ฉันสงสัยว่าจะมีวิธีใดในการเปลี่ยนการตั้งค่าเริ่มต้นจาก 5 วินาทีและ 10 หน้าเพื่อบอกว่าทุก ๆ วินาทีหรือเรียกใช้เกิน 20 หน้ามีวิธีการทำเช่นนั้นหรือไม่ ข้อมูลหรือหากมีการกระทำอื่นใดที่สามารถช่วยเหลือได้
การจัดทำดัชนีใหม่จะทำงานกับดัชนีที่ได้รับผลกระทบมากที่สุดอย่างน้อยสัปดาห์ละครั้ง (ส่วนใหญ่จะเป็นวันเว้นวัน)
SQL Server 2012 Enterprise SP3_CU8 (อัปเกรดเป็น CU9 ในวันพรุ่งนี้) บน AlwaysOn High Availabilty Cluster พร้อมกับการจำลองแบบ (การแจกจ่ายบนเซิร์ฟเวอร์แยกต่างหาก)