MySQL 8 - optimizar todas las tablas + índices
Tengo un montón de tablas (InnoDB) dentro de varias bases de datos (MySQL 8), en las que ejecuto scripts de Garbage Collect, a diario, eliminando registros obsoletos que ya no son necesarios. Todas las tablas tienen índices.
¿Tendría sentido / sería beneficioso optimizar todas las tablas, digamos cada semana, para aumentar el rendimiento? Si es así, ¿hay un buen comando para ejecutarlo?
Intenté hacer
sudo mysqlcheck -o --all-databases
Pero recibe el siguiente mensaje de error:
note : Table does not support optimize, doing recreate + analyze instead
status : OK
Respuestas
No se moleste. InnoDB se encarga principalmente de sí mismo. OPTIMIZE
Exprime temporalmente un poco de espacio desperdiciado, pero se producen nuevos desperdicios a medida que ocurren las inserciones / etc. El beneficio de rendimiento de OPTIMIZE
es casi nulo.
Esos mensajes son normales para InnoDB. Puedes seguir haciéndolo.
El motor de almacenamiento InnoDB funciona OPTIMIZE TABLE mydb.mytable;
así
ALTER TABLE mydb.mytable ENGINE=InnoDB;
ANALYZE TABLE mydb.mytable;
He mencionado esto a lo largo de los años:
Sep 27, 2015
: ¿Cómo puedo desfragmentar tablas en MySQL?Jun 24, 2015
: ¿ guía para llamar a optimizar tabla después de alterar tabla?Feb 27, 2013
: ¿Cuál es la diferencia entre optimizar la tabla y analizar la tabla en mysql?Aug 04, 2011
: Optimización de la configuración predeterminada de InnoDB
Recomiendo hacer análisis diario o semanal
sudo mysqlcheck --analyze --all-databases
Luego, optimice una vez al mes o una vez al trimestre.