Como innodb_fle_per_table está desactivado, no puede ver la tabla y medir su progreso.
Hice una publicación anterior sobre cómo hacer esto para MyISAM . Puede hacer esto para InnoDB si y solo si innodb_file_per_table estaba habilitado y vuelve a diseñar la infraestructura de InnoDB . Todavía requiere mirar en el sistema operativo los tamaños de los archivos en cuestión.
Una vez que haya implementado completamente la limpieza de InnoDB y haya habilitado innodb_file_per_table, es posible que desee realizar la actualización del índice de la siguiente manera:
EJEMPLO tienes lo siguiente
- Instancia MySQL con / var / lib / mysql como datadir
- Tabla de InnoDB llamada
db.lotsofdata
con 20 millones de nombres:
La tabla se ve así:
CREATE TABLE db.lotsofdata
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
PRIMARY KEY (id)
) ENGINE=InnoDB;
Suponga que desea crear un índice de nombres. Puedes hacerlo:
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;
Mientras se ejecuta INSERT, ingresa al sistema operativo y ejecuta esto:
cd /var/lib/mysql/db
watch ls -l lotsofda*.ibd
Esto le dará una lista del tamaño actual de lotsofdata_new.ibd
. Cuando se hace más grande que lotsofdata.ibd
, entonces sabes que estás cerca de completarse.
Por cierto, MariaDB tiene un estado de progreso implementado internamente .