Você precisa definir o MyISAM Key Cache e o InnoDB Buffer Pool para acomodar os dados que você possui. publiquei duas consultas em o DBA StackExchange para calcular o tamanho recomendado para esses caches .
Para o MyISAM, uma vez que apenas páginas de índice são armazenadas em cache, esta consulta recomendará o tamanho de key_buffer_size com base na soma de seus arquivos .MYI e o limitará em 4G se exceder 4G:
SELECIONAR CONCAT (REDONDO (KBS / POWER (1024, SE (PowerOfTwo < 0,0, IF (PowerOfTwo > 3,0, PowerOfTwo))) + 0,4999),
SUBSTR ('KMG', SE (PowerOfTwo < 0,0, IF (PowerOfTwo > 3,0, PowerOfTwo)) + 1,1)) recommended_key_buffer_size
FROM (SELECIONE MENOS (POWER (2,32), KBS1) KBS DE
(SELECT SUM (index_length) KBS1 FROM informações_schema.tables
WHERE engine = 'MyISAM' E table_schema NOT IN ('information_schema', 'mysql')) AA
) A, (SELECIONE 2 PowerOfTwo) B;
Para o InnoDB, como os dados e páginas de índice são armazenados em cache, essa consulta recomendará o tamanho de innodb_buffer_pool_size com base na soma de seus dados e páginas de índice:
SELECIONAR CONCAT (REDONDO (KBS / POWER (1024, SE (PowerOfTwo < 0,0, IF (PowerOfTwo > 3,0, PowerOfTwo))) + 0,49999),
SUBSTR ('KMG', SE (PowerOfTwo < 0,0, IF (PowerOfTwo > 3,0, PowerOfTwo)) + 1,1)) recommended_innodb_buffer_pool_size
FROM (soma SELECT (comprimento_de_data + comprimento_Index) KBS FROM information_schema.tablesM
WHERE engine = 'InnoDB') A,
(SELECIONE 2 PowerOfTwo) B;
De acordo com a sua exibição de mysqltuner.pl, você tem cerca de 24 GB de RAM, 530MB id InnoDB, 7.2GB de índices MyISAM. Não importa o que as recomendações surgem, por favor, use o bom senso definindo innodb_buffer_pool_size para um número de aproximadamente 530MB, mas abaixo de 1GB. Como o MyISAM não tira proveito da memória em certas instâncias, você pode deixar o key_buffer_size como 1024M, porque mysqltuner.pl diz que 90% da RAM é usada pelas conexões de banco de dados. O sistema operacional também precisa de memória RAM.
Eu diminuiria isso:
[mysqld]
join_buffer_size = 4M
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 4M
Reinicie o mysql depois e execute mysqltuner.pl. Seu objetivo aqui é obter o máximo possível de uso de memória abaixo de 80%, para que o sistema operacional tenha espaço para a memória.
CAVEAT: Por favor, desculpe a coluna chamada 'PowerOfTwo'. Deve realmente ser chamado PowerOf1024. O objetivo do PowerOfTwo é exibir as respostas recomendadas em GB, MB, KB
- (SELECT 0 PowerOfTwo) exibe o valor em Bytes
- (SELECT 1 PowerOfTwo) exibe o valor em QuiloBytes
- (SELECT 2 PowerOfTwo) exibe o valor em MegaBytes
- (SELECT 3 PowerOfTwo) exibe o valor em GigaBytes