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

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

Estou trabalhando em um site que acredito que recebe cerca de 70 mil visitas por dia e faz uso de muitas consultas que usam UNION'smais 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 cachemelhor possível, mas sempre que uma das tabelas é alterada e os dados do cache precisam ser removidos, o servidor começa a travar e o mysql tmp dirfica cheio e a carga do servidor sobe muito e o seguinte tem que ser feito para corrigir o problema:

  1. Pare o mysql (o carregamento volta ao normal)
  2. reparar as tabelas do banco de dados
  3. limpar cache do mysql
  4. liberar memcache
  5. reparar tabelas de banco de dados novamente
  6. reinicie o mysql

Eu sei que a replicação é provavelmente a melhor ideia, mas provavelmente também a mais cara. Então, estou me perguntando se utilizar Sphinxdehttp://sphinxsearch.com/ajudaria muito?

Eu usei-o antes em outro site para poder obter pesquisa de texto completo nas tabelas INNODB, então tenho um pouco de conhecimento de como funciona, mas não tenho certeza de como lidaria com algo assim.

Ele utiliza seus próprios métodos de cache? Como não gostaria de mudar para isso e ainda ter os mesmos problemas com o Sphinx.

Editar:Abaixo está uma captura de tela do EXPLAIN(primeira linha faltando, tive problemas com o programa de captura de tela)

Atualizar:O site recebe apenas 30/k visitantes/dia agora.

insira a descrição da imagem aqui

Responder1

Você deve identificar e resolver os problemas do banco de dados, 70 mil visitas por dia não é muito e o MySQL é capaz de lidar com essa quantidade de trabalho. Você deve baixar e usar mysqlreportuma ferramenta semelhante para analisar e ajustar o uso dos buffers MyISAM e InnoDB do MySQL (eu também recomendaria mudar para o InnoDB se você ainda estiver usando o MyISAM). A próxima etapa é habilitar o log de consultas lentas no MySQL e analisar o log de consultas lentas diariamente usando pt-query-digesta ferramenta e EXPLAINo comando MySQL. Provavelmente seu banco de dados não possui índices adequados.

informação relacionada