Estou trabalhando em um site que, acredito, recebe cerca de 70 mil visitas por dia e faz uso de muitas consultas que usam UNION's
em cerca de 45 tabelas diferentes. Essas tabelas geralmente variam de cerca de 15 mil linhas a cerca de 500 mil. linhas em cada tabela.
Otimizamos o query cache
da melhor forma possível, mas sempre que uma das tabelas é alterada e os dados no cache precisam ser removidos, o servidor começa a travar e o mysql tmp dir
é preenchido e o servidor a carga fica muito alta e é preciso fazer o seguinte para corrigir o problema:
- Pare o mysql (a carga vai para o normal)
- repare as tabelas do banco de dados
- limpa o cache do mysql
- liberar memcache
- reparar novamente as tabelas do banco de dados
- reiniciar o mysql
Eu sei que a replicação é provavelmente a melhor idéia, mas provavelmente também a mais cara. Então, imaginando se usar Sphinx
do link ajudaria muito?
Eu usei isso antes para outro site, para que eu pudesse obter uma pesquisa de texto completo nas tabelas INNODB, portanto, tenha um pouco de conhecimento de como funciona, mas não tenho certeza de como lidar com algo assim.
Utiliza seus próprios métodos de cache? Como não gostaria de mudar isso e ainda obter os mesmos problemas com o Sphinx.
Editar: abaixo está uma captura de tela do EXPLAIN
(falta da primeira linha, problemas com o programa de captura de tela)
Atualização: o site recebe apenas 30 / k visitantes / dia agora.