O Sphinx seria uma boa solução para resolver o problema do servidor com leituras pesadas do MySQL?

1

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:

  1. Pare o mysql (a carga vai para o normal)
  2. repare as tabelas do banco de dados
  3. limpa o cache do mysql
  4. liberar memcache
  5. reparar novamente as tabelas do banco de dados
  6. 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.

    
por Brett 23.08.2012 / 11:36

1 resposta

3

Você deve identificar e resolver os problemas do banco de dados, 70 mil visitas por dia não são muito e o MySQL é capaz de lidar com essa quantidade de trabalho. Você deve baixar e usar o mysqlreport ou ferramenta similar para analisar e ajustar o uso dos buffers MySQL MyISAM e InnoDB (eu também recomendaria mudar para o InnoDB se você ainda estiver usando o MyISAM). O próximo passo é habilitar o log de consultas lentas no MySQL e analisar o log de consultas lentas diariamente usando a ferramenta pt-query-digest e o comando EXPLAIN MySQL. Provavelmente você banco de dados não possui índices adequados.

    
por 23.08.2012 / 11:47