Eu fiz a maior parte da minha otimização no MyISAM, (a maioria dos meus DBs são < 3% de gravações). No entanto, eu tenho algumas otimizações gerais do MySQL para você considerar. Em ordem de prioridade, em relação à sua situação.
- Total de tabelas fragmentadas: 41
Isso é muito alto, considerando que você tem apenas 71 tabelas. Com uma proporção tão grande de gravações para leituras, no seu caso, explica o motivo.
Eu otimizaria todos os seus bancos de dados. Isso é mais eficaz nas tabelas MyISAM, mas elas compõem a maioria dos seus dados. Não pare este comando a meio caminho!
mysqlcheck --all-databases --optimize
- Limpeza de cache de consultas por dia: 102031
Isso é excessivo e quase explicaria por que a eficiência do cache de consultas poderia ser melhor. Faça o que o mysqltuner sugere, aumente essa 20M para algo mais como 64M. (se isso for muito agressivo, você pode abaixá-lo, mas pode acabar sendo muito conservador) procure por esta linha em my.cnf na seção mysqld, e mude seu 20M para 64M
query_cache_size = 64M
-
innodb_buffer_pool_size (> = 221M)
Você deseja um buffer pool que seja 10% maior que os dados da tabela. Então, algo mais como 245, mas eu realmente iria 250 (torna ainda, dá algum espaço)
Mude sua linha de 221M para 250M.
innodb_buffer_pool_size = 250M
Isso é o que eu posso recomendar com segurança, sem mais informações, eu acho que você precisa para levantar table_cache também. Não sei ao certo o que seria melhor, você gostaria de verificar suas tabelas abertas durante algum tempo.
Certifique-se também de que suas tabelas pesadas de gravação estão usando o InnoDB, leia pesado eu iria MyISAM. Algumas aplicações usam essas habilidades somente do InnoDB, que devem ser consideradas. Alguns argumentam um motor ou outro o tempo todo, por diferentes razões. É exatamente o que eu faria.