เนื่องจาก innodb_fle_per_table ปิดคุณไม่สามารถดูตารางและวัดความคืบหน้าได้
ฉันทำโพสต์ก่อนหน้านี้เกี่ยวกับวิธีการทำเช่นนี้สำหรับ MyISAM คุณสามารถทำสิ่งนี้กับ InnoDB ได้หากเปิดใช้งาน InnodDB และเปิดใช้งานโครงสร้างของ InnoDBใหม่เท่านั้น มันยังต้องดูในระบบปฏิบัติการที่ขนาดของไฟล์ที่เป็นปัญหา
เมื่อคุณใช้งานการล้างข้อมูลบน InnoDB อย่างสมบูรณ์และคุณได้เปิดใช้งาน innodb_file_per_table แล้วคุณอาจต้องการดำเนินการปรับปรุงดัชนีดังต่อไปนี้:
ตัวอย่างคุณมีดังต่อไปนี้
- อินสแตนซ์ MySQL พร้อม / var / lib / mysql เป็น datadir
- ตาราง InnoDB
db.lotsofdata
มีชื่อเรียก20 ล้านชื่อ:
ตารางมีลักษณะดังนี้:
CREATE TABLE db.lotsofdata
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
PRIMARY KEY (id)
) ENGINE=InnoDB;
สมมติว่าคุณต้องการสร้างดัชนีชื่อ คุณสามารถทำได้:
CREATE TABLE db.lotsofdata_new LIKE db.lotsofdata;
ALTER TABLE db.lotsofdata_new ADD INDEX (name);
INSERT INTO db.lotsofdata_new SELECT * db.lotsofdata;
ALTER TABLE db.lotsofdata RENAME db.lotsofdata_old;
ALTER TABLE db.lotsofdata_new RENAME db.lotsofdata;
TRUNCATE TABLE db.lotsofdata_old;
ALTER TABLE db.lotsofdata_old ENGINE=InnoDB;
DROP TABLE db.lotsofdata_old;
ในขณะที่ INSERT กำลังทำงานคุณไปที่ระบบปฏิบัติการและดำเนินการดังนี้
cd /var/lib/mysql/db
watch ls -l lotsofda*.ibd
lotsofdata_new.ibd
นี้จะให้รายชื่อของขนาดปัจจุบันของ เมื่อมันใหญ่กว่าlotsofdata.ibd
นั้นคุณก็รู้ว่าคุณใกล้จะสำเร็จแล้ว
BTW MariaDB มีสถานะความคืบหน้าการดำเนินการภายใน