การตั้งค่าการล้างข้อมูลบนผี


10

ฉันใช้ฐานข้อมูลธุรกรรมสูง (โดยเฉลี่ยประมาณ 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 พร้อมกับการจำลองแบบ (การแจกจ่ายบนเซิร์ฟเวอร์แยกต่างหาก)

คำตอบ:


4

ฉันสงสัยว่าจะมีวิธีใดในการเปลี่ยนการตั้งค่าเริ่มต้นจาก 5 วินาทีและ 10 หน้าเพื่อบอกว่าทุก ๆ วินาทีหรือทำงานมากกว่า 20 หน้า

ไม่มีเลย อย่างน้อยฉันไม่รู้ตอนนี้ :-)

หากมีการกระทำอื่นใดที่สามารถช่วยเหลือได้

จากบล็อกของ Paul Randal - บางครั้งวิธีการหนึ่งที่ผู้ใช้พิจารณาคือบังคับให้การล้างข้อมูลแบบผีเพื่อล้างข้อมูลทุกอย่างด้วยการสแกนตารางหรือดัชนี

select * from [your_problem_table] with (index = Index_that_has_large_Deletes)

มีความเป็นไปได้หรือไม่ที่คุณจะแบ่งพาร์ติชันตารางและล้างพาร์ติชั่นเก่าแทนที่จะทำการลบ ? ปีงบประมาณ. SQL Server 2016 ขึ้นไปให้คุณตัดพาร์ติชั่นแต่ละพาร์ติชั่นได้เช่นกัน.

นอกจากนี้คุณสามารถ(ทดสอบและนำไปใช้) - ปิดใช้งานการล้างผี (การติดตามสถานะ 661)จากนั้นrebuild index WITH ONLINE = ONเลือกตัวเลือกเนื่องจากคุณใช้รุ่น Enterprise

หากคุณใช้ AlwaysON (พร้อม async) ด้วยการจำลองแบบตรวจสอบให้แน่ใจว่าเปิดใช้งานการติดตามการตั้งค่าสถานะ 1448 - อนุญาตให้ตัวอ่านบันทึกการจำลองแบบย้ายไปข้างหน้าแม้ว่าแบบจำลองรองแบบอะซิงโครนัสไม่ยอมรับการเปลี่ยนแปลง

ตรวจสอบให้แน่ใจว่าได้อ่านลบที่แบ่งหน้าและส่งต่อผีจากพอลไวท์เพื่อดูว่าตารางของคุณมีทริกเกอร์หรือคอลัมน์ลอบที่จะชะลอตัวลง

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