Оскільки innodb_fle_per_table вимкнено, ви не можете бачити таблицю та вимірювати її прогрес.
Я зробив раніше повідомлення про те, як це зробити для MyISAM . Ви можете зробити це для InnoDB лише тоді, коли було включено innodb_file_per_table, і ви перейменуєте інфраструктуру InnoDB . Це все ще вимагає шукати в операційній системі розміри файлів, про які йдеться.
Після того як ви повністю реалізували InnoDB Cleanup та увімкнули innodb_file_per_table, можливо, вам потрібно буде оновити індекс так:
ПРИКЛАД: у вас є наступне
- MySQL Instance з / 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 має статус прогресу, реалізований всередині країни .