ฉันมีแถวประมาณ 84 ล้านแถว พวกเขาทั้งหมดจะต้องถูกถ่ายโอนไปยังฐานข้อมูลแยกต่างหากบนเซิร์ฟเวอร์เดียวกันจากนั้นฉันลบเพื่อลบประมาณ 60 ล้านแถวจากฐานข้อมูลต้นทาง
84 ล้านแถวทั้งหมดอยู่ในตารางเดียวกัน ตารางนั้นคิดเป็น 90% ของฐานข้อมูลทั้งหมด
ดังนั้น ... ที่มา: 84 ล้านแถว -> 24 ล้านแถวปลายทาง: 0 แถว -> 84 ล้านแถว
แหล่งที่มาใช้โหมดการกู้คืนแบบเต็มปลายทางจะใช้งานง่าย
ฉันสงสัยว่าอะไรจะเป็นวิธีที่มีประสิทธิภาพที่สุดในการทำสิ่งนี้?
แผนก:
1) INSERT INTO destination SELECT * จากแหล่งที่มา
2) แหล่งที่มาตัด
3) INSERT INTO SELECT เลือก * จากปลายทาง WHERE keep_condition = 1
แผนข:
1) คืนค่าสำเนาสำรองของฐานข้อมูลต้นทางเป็นฐานข้อมูลปลายทาง
2) วางทุกตารางยกเว้นตารางที่จำเป็นบนฐานข้อมูลปลายทาง
3) แหล่งที่มาตัด
4) INSERT INTO SELECT เลือก * จากปลายทาง WHERE keep_condition = 1
แผน C:
1) INSERT INTO destination SELECT * จากแหล่งที่มา
2) ลบแหล่ง WHERE keep_condition = 0
หรืออย่างอื่น?
ขอบคุณ