การปรับประสิทธิภาพของการล้างข้อมูลตารางใน SQL Server 2016
ฉันต้องทำการล้างข้อมูลจำนวนมหาศาลจากตารางหลักไปยังที่เก็บถาวรโดยอัตโนมัติ
ขั้นตอนที่ฉันกำลังติดตาม:
ฉันกำลังแทรกข้อมูลจากตารางหลักไปยังตารางเก็บถาวร
หลังจากยืนยันการนับจำนวนในทั้งสองตารางแล้วให้ลบข้อมูลออกจากตารางหลัก
ความเสี่ยง: คำสั่งลบอาจอยู่ในสถานะหยุดทำงานและ DB จะเข้าสู่โหมดการกู้คืน
หมายเหตุ : เราไม่สามารถดำเนินการ DDL บนโต๊ะหลักได้เนื่องจากเป็นตารางธุรกรรมจริง เราสามารถไปกับ DML
- ฐานข้อมูล: SQL Server 2016
- ระบบปฏิบัติการ: Windows และ IIS
คำตอบ
DDL เป็นหนึ่งในวิธีหลักในการเร่งความเร็วในการลบบันทึก แต่เมื่อเห็นว่า DDL ไม่ใช่ตัวเลือกและคุณกำลังเผชิญกับ 'สถานะหยุดทำงาน' สำหรับคำสั่งลบบางทีฉันขอแนะนำให้มองหาการลบระเบียนในแบทช์?
โปรดดูลิงค์และนี่คือตัวอย่างการค้นหาตามลิงค์:
DECLARE @Batch INT = 1000
WHILE 1 = 1
BEGIN
DELETE TOP (@Batch)
FROM MyTable
WHERE Date < ‘20200401’';
IF @@ROWCOUNT < @Batch BREAK
END
ในกรณีนี้เมื่อเราลบตามวันที่ตรวจสอบให้แน่ใจว่าคุณมีดัชนีในวันที่เพื่อให้ SQL Server สามารถดึงเฉพาะแถวเหล่านั้นได้อย่างรวดเร็ว คุณจะต้องหลีกเลี่ยงการล็อกระดับโต๊ะ