tablas horizontal fragmentacion mysql optimization fragmentation defragmentation

horizontal - Mysql OPTIMIZE TABLE para todas las tablas fragmentadas



fragmentacion de tablas en mysql (3)

Me gustaría OPTIMIZE todas las tablas actualmente fragmentadas. Estas tablas deben tener information_schema.DATA_FREE > 0 .

¿Es posible optimizar todas las tablas con esta propiedad en un comando en SQL o tendré que escribir código externo para hacer esto?


Puedes hacer algo como esto:

SELECT concat("OPTIMIZE TABLE ", table_schema,".",table_name,";") FROM tables WHERE DATA_FREE > 0 INTO OUTFILE ''/tmp/optimize.sql''; SOURCE ''/tmp/optimize.sql'';

Alternativamente, si el primero falla, intente:

SELECT concat("OPTIMIZE TABLE ", table_schema,".",table_name,";") FROM information_schema.tables WHERE DATA_FREE > 0 INTO OUTFILE ''/tmp/optimize.sql''; SOURCE /tmp/optimize.sql;


Sé que hay una respuesta. Pero MySQL tiene esta recomendación para INNODB DB''s:

Puede acelerar las exploraciones de índice si realiza periódicamente una operación ALTER TABLE “nula”, lo que hace que MySQL reconstruya la tabla:

ALTER TABLE tbl_name ENGINE=INNODB

Encontrado aquí http://dev.mysql.com/doc/refman/5.0/en/innodb-file-defragmenting.html