Vì innodb_fle_per_table là OFF, bạn không thể xem bảng và đo lường tiến trình.
Tôi đã viết một bài trước đó về cách làm điều này cho MyISAM . Bạn có thể làm điều này cho InnoDB khi và chỉ khi innodb_file_per_table được bật và bạn tìm kiếm lại cơ sở hạ tầng InnoDB . Nó vẫn yêu cầu tìm kiếm trong hệ điều hành ở kích thước của các tệp được đề cập.
Khi bạn đã thực hiện đầy đủ InnoDB Cleanup và bạn đã bật innodb_file_per_table, bạn có thể muốn thực hiện cập nhật chỉ mục như sau:
VÍ DỤ bạn có những điều sau đây
- Sơ đồ MySQL với / var / lib / mysql là datadir
- Bảng InnoDB được gọi
db.lotsofdata
với 20 triệu tên:
Bảng trông như thế này:
CREATE TABLE db.lotsofdata
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
PRIMARY KEY (id)
) ENGINE=InnoDB;
Giả sử bạn muốn tạo một chỉ mục tên. Bạn có thể làm được việc này:
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;
Trong khi INSERT đang chạy, bạn vào hệ điều hành và chạy nó:
cd /var/lib/mysql/db
watch ls -l lotsofda*.ibd
Điều này sẽ cung cấp cho bạn một danh sách kích thước hiện tại của lotsofdata_new.ibd
. Khi nó lớn hơn lotsofdata.ibd
, thì bạn biết bạn đã gần hoàn thành.
BTW MariaDB có Trạng thái tiến độ được triển khai trong nội bộ .