Buenas pessoal,
Nos últimos dias coloquei diversas bases de dados na minha estação de trabalho, algo em torno de umas 15 bases de dados com aproximadamente 10gb de dados em umas 5000 tabelas. Tudo andava normal com exceção do boot que estava bem demorado e com um alto processamento sendo executado no início da sessão do usuário.
Depois de investigar a árvore de processos através do comando top, percebi que o fanfarrão era o MySQL. Acessando o console do MySQL durante o boot do sistema era possível ver que havia uma query sendo executada à um bom tempo, algo em torno de uns 2 minutos mais ou menos. A dita query era esta:
1 |
select count(*) into @discard from information_schema.<code>PARTITIONS |
E aqui as queries em execução no MySQL durante a inicialização da sessão do usuário:
1 2 3 4 5 6 7 8 |
mysql> show full processlist; +----+------------------+-----------+------+---------+------+----------------+----------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------------------+-----------+------+---------+------+----------------+----------------------------------------------------------------------+ | 9 | debian-sys-maint | localhost | NULL | Query | 12 | Opening tables | select count(*) into @discard from <code>information_schema</code>.<code>PARTITIONS</code> | | 10 | root | localhost | NULL | Query | 0 | NULL | show full processlist | +----+------------------+-----------+------+---------+------+----------------+----------------------------------------------------------------------+ 2 rows in set (0.00 sec) |
Ao pesquisar um pouco sobre esta query não achei nada que explicasse o motivo dela a não ser algumas coisas sobre esquema de discos com RAID ativo em instalações do MySQL…realmente levei uns 3 dias até descobrir o porque dessa query.
Ao pedir ajuda lá no StackOverflow, o Nelson me passou uma dica do que poderia ser. No caso de distribuições Debian based, a instalação do MySQL contém um bash script do Debian contigo dentro da pasta de configurações do MySQL:
1 |
/etc/mysql/debian-start |
Este script possui uma série de instruções para serem executadas ao levantar do serviço do MySQL, entre eles o serviço para procurar e reparar tabelas das bases de dados ‘check_for_crashed_tables‘.
Essa verificação é bem pesada, uma vez porque é necessário varrer todas as bases e tabelas a fim de validar as mesmas, logo caso não tenhamos necessidade de verificar por tabelas corrompidas ou afins basta comentarmos esta instrução do arquivo com um cerquilha no início da linha:
1 |
#check_for_crashed_tables |
Feito isto, faça um teste de reboot na sua estação para verificar ;)