Alguma solução para os MySQL Servers para evitar torná-los irresponsivos ao executar grandes consultas?

1

Eu executo vários servidores mysql para vários clientes, há um problema comum que eu costumava ver. Quando eu executo alguma consulta grande contra bancos de dados grandes, por exemplo:

Eu tenho uma tabela MyISAM com vários índices de texto completo e cerca de 8.7 milhões de registros, se eu pesquisar uma coluna não indexada, o serviço mysql não responderá até que o resultado seja lançado (isso pode levar 30 minutos).

Como evitar a prestação do serviço mysql sem resposta? Por exemplo, em qualquer sistema operacional você pode definir a prioridade do processo para garantir que todo processo receba alguns recursos para executar, como faço isso no mysql?

    
por Ahmad Hamad 21.04.2015 / 08:44

2 respostas

2

Pode haver várias soluções para o seu problema. Você pode tentar ajustar as configurações (permitindo que o mysql use mais memória ram, certificando-se de que ele não troque, adicionando índices) ou alterando o hardware (mais ram, discos mais rápidos).

Outra opção é configurar um escravo mysql para executar as pesadas consultas de leitura, assim você ainda pode atualizar o mestre com consultas de leitura + escrita enquanto o escravo calcula o resultado que você precisa.

    
por 21.04.2015 / 08:53
0

Você DEVE ter índices para cada coluna envolvida na pesquisa. Quando você pesquisa na coluna que não possui índice, pesquise se executada por "filesort" que não é muito eficiente para o FTS.

    
por 21.04.2015 / 12:50