Acabei de começar a usar o mysqltuner para ajudar a manter meu servidor mysql rápido e saudável. No entanto, estou tendo um pouco de dificuldade para otimizar minhas tabelas. Quando executo o mysqltuner, tudo funciona bem e retorna os resultados. Afirma que existem 317 tabelas fragmentadas e que devo executar a tabela 'OPTIMIZE' para repará-las.
Então, escrevi um script que é executado semanalmente para 'OPTIMIZAR' todas as tabelas nos bancos de dados do servidor local. O script parece funcionar bem devido aos resultados retornados. Apesar disso, quando executo o mysqltuner novamente, ele ainda diz que existem 317 (na verdade, para ser justo, reduziu de 4 para 313) tabelas fragmentadas e que devo OTIMIZÁ-las ainda.
Há algo mais que devo fazer? Meu roteiro está certo?
Aqui está o meu script OPTIMIZE:
mysqlcheck -u'admin' -p`cat /etc/psa/.psa.shadow` --auto-repair --optimize --all-databases;
Depois de excluir algumas linhas de uma tabela, seu arquivo de dados pode ficar fragmentado e essa tabela não é otimizada em termos de MySQL. Se você realmente exclui registros dessas tabelas com frequência, não se preocupe porque esse é o comportamento esperado . Você não precisa fazer mais nada.
OPTIMIZE TABLE
geralmente é usado para recuperar o espaço não utilizado e para desfragmentar o arquivo de dados. Além disso, você deve saber que o MySQL bloqueia a tabela durante o tempoOPTIMIZE TABLE
em execução, o que significa que ninguém pode executar consultas nessa tabela e precisa esperar.