Uma coisa que deve ser levada em consideração é como o MySQL usa buffers para seus principais mecanismos de armazenamento: InnoDB e MyISAM .
O que está armazenado em cache na memória difere bastante entre esses mecanismos de armazenamento.
O InnoDB armazena em cache as páginas de dados e de índice. Eles são carregados no buffer pool do InnoDB, dimensionado por innodb_buffer_pool_size .
O MyISAM armazena em cache apenas as páginas de índice e elas são carregadas no Key Key (Key Buffer), que é dimensionado por key_buffer_size .
Você deve usar o information_schema.tables para obter os tamanhos de dados e índices ocupados no disco para dimensionar corretamente o InnoDB Buffer Pool e o MyISAM Key Cache corretamente .
Dependendo da quantidade de dados que você possui e de quanto tempo permitirá, você pode aquecer os caches da seguinte maneira:
Para cada mesa TableT
- ir para cada NDX do índice
- para cada índice NDX
- execute SELECT todas as colunas no NDX, pelo menos uma coluna não indexada na TabelaT da TabelaT
Ao fazer isso, você garante que todas as páginas de dados e índices sejam lidas pelo menos uma vez. Eles ficarão no cache. Este conceito é praticado, em parte e em princípio, pela Percona . A Percona construiu esse conceito no mk-slave-prefetch . O que este programa faz é
- ler logs de retransmissão em um escravo antes do escravo processar o SQL nele
- pegue uma instrução SQL do log de retransmissão e converta-a em um SELECT utilizando as cláusulas WHERE, GROUP BY e ORDER BY como um guia para escolher índices
- execute a instrução SELECT que veio do SQL convertido
Isso força o escravo a ter 99,99% dos dados necessários ao escravo para processar o SQL rapidamente. Isso também prepara o escravo no caso de você fazer failover manualmente para o escravo e promovê-lo para um mestre. QUAIS CACHES SÃO APENAS DO MESMO COMO O MESTRE DE QUE VOCÊ FALHOU.
CONCLUSÃO
Nada supera ter caches prontos, dispostos e capazes de serem usados em um ambiente de INSERTS, UPDATEs e DELETEs pesados.
De uma chance !!!
EMBARGO
Com o nascimento de produtos como o memcached, alguns se afastaram da necessidade de executar o ajuste adequado do MySQL. É verdade que muitos sites se beneficiam do aumento na recuperação de dados fornecido pelo controle do comportamento de armazenamento em cache de dados, como os desenvolvedores viram rapidamente com o memcached. Muitos outros sites, apenas trocando os mecanismos de armazenamento ou configurando corretamente o MySQL, obtiveram os mesmos benefícios de desempenho. Antes de desistir do banco de dados e usá-lo estritamente como repositório, aproveite ao máximo o banco de dados. Siga a devida diligência e você poderá se surpreender com o que o MySQL fará por você.