Eu tenho um banco de dados myisam rodando no MariaDB 10.x. Tenho certeza de que tem muito espaço em branco que eu gostaria de aparar. Eu estava planejando executar, OPTIMIZE <TABLE NAME>;
mas um pensamento me ocorreu: seria mais rápido/fácil apenas coletar um backup e restaurá-lo?
Por exemplo...
1) Executar:mysqldump -u root --hex-blob --add-drop-database --databases FooDatabase > /tno/FooBackup.sql
2) Em seguida, execute:mysql -u root -vvv < /tmp/FooBackup.sql
O espaço em branco não estaria no arquivo de backup, então presumivelmente seria compacto ao restaurar ... e dessa forma, o MariaDB não precisaria ir linha por linha verificando coisas.
Isso é uma má ideia? É certo que o backup/restauração não verificaria erros ou faria as outras coisas optimize
, mas se eu estivesse APENAS interessado em eliminar o espaço em branco, não seria mais rápido?
Ambos alcançarão essencialmente a mesma coisa. Se a sua versão exata do banco de dados não oferece OPTIMIZE online, o dump e a restauração podem ser úteis se você restaurar em uma nova tabela e, em seguida, DROP a antiga e RENOMEAR a nova, permitindo seleções simultâneas durante a importação. Em relação à velocidade, o dump e a restauração podem ser um pouco mais rápidos, mas provavelmente não é um ganho enorme. Prefiro se estiver trabalhando com uma versão que não suporta OPTIMIZE online.
Como Rick James mencionou, esse tipo de coisa nem sempre é necessário, mas vi isso ajudar a reequilibrar índices em massa em tabelas com colunas lutando para acompanhar um grande número de atualizações simultâneas.