Apenas para obter alguma perspectiva do extrato do seu arquivo de configuração, fiz uma comparação com o valor padrão ( 1 , 2 . A notação terá o parâmetro seguido pelo seu valor e o valor padrão entre parênteses.
key_buffer_size = 128M (8M)
max_allowed_packet = 5M (4M)
table_open_cache = 256 (2000)
sort_buffer_size = 10M (2M)
read_buffer_size = 20M (1M)
read_rnd_buffer_size = 10M (2M)
myisam_sort_buffer_size = 64M (8M)
thread_cache_size = 8 (-1)
query_cache_size= 30M (0/1M)
thread_concurrency = 8 (10)
bulk_insert_buffer_size = 256 (8M)
innodb_buffer_pool_size = 5G (128M)
innodb_additional_mem_pool_size = 1G (8M)
innodb_log_buffer_size = 1G (8M)
innodb_log_file_size = 1G (5M)
innodb_file_per_table = 1 (Off/On)
Como podemos ver, você aumentou a maioria dos caches consideravelmente. Mas isso faz sentido? Você disse que seu banco de dados está usando o mecanismo InnoDB. De acordo com a documentação acima, key_buffer_size
, read_buffer_size
, bulk_insert_buffer_size
se aplica somente aos bancos de dados MyISAM. Não tenho certeza de que espaços temporários estarão sendo executados.
O uso de myisam_sort_buffer_size
parece invertido, especialmente porque a documentação declara: The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE.
Por isso, seria usado raramente na maioria dos casos de uso normal.
Além disso, você está usando as configurações a seguir, que parecem depender muito do padrão de uso do banco de dados max_allowed_packet
, table_open_cache
, thread_cache_size
, innodb_log_buffer_size
, mas você não disse nada sobre os padrões de uso. Portanto, considere a documentação acima para ver o que eles realmente fazem e compará-los com o padrão de uso do banco de dados.
Tenha em atenção que sort_buffer_size
e read_rnd_buffer_size
estão reservados por sessão. Alguns dos parâmetros MyISAM podem ser tão bons, então você realmente tem um pouco de sobrecarga para cada sessão. Novamente, você precisa avaliar o padrão de uso real.
Agora, para as configurações do InnoDB que você especificou. innodb_additional_mem_pool_size
está obsoleto. Não está claro por que você modificaria innodb_log_file_size
, innodb_file_per_table
não tem certeza de qual poderia ser seu motivo para essa alteração. O último pode ser apenas o padrão de On
? Ao definir a configuração restante de innodb_buffer_pool_size
para um valor tão alto, convém usar também innodb_buffer_pool_instances
.
No geral, parece que você acabou de tentar algo e não funcionou. De acordo com seus comentários, você nem sequer olhou para os arquivos de log do MySQL para descobrir o que era responsável pelo serviço que não aceitasse conexões ou não aparecesse. Se você realmente quiser otimizar o desempenho do banco de dados, terá que fazer isso. Considere o uso de índices adicionais em tabelas nos quais é sensato aumentar o desempenho da consulta e observar quais consultas estão realmente sendo executadas no banco de dados. Além disso, tente entender o padrão de uso que o banco de dados tem em termos do número de conexões e do tamanho das consultas.