Não aumente os buffers por conexão!
Nem todos os buffers no my.cnf são alocados apenas uma vez para a instância do servidor. Alguns buffers são alocados para cada conexão. Por favor, veja mais informações em link :
Citação:
Buffers such as join_buffer_size, sort_buffer_size, read_buffer_size and read_rnd_buffer_size are allocated per connection. Therefore a setting of read_buffer_size=1M and max_connections=150 is asking MySQL to allocate – from startup – 1MB per connection x 150 connections. For more than a decade the default remains at 128K. Increasing the default is not only a waste of server memory, but often does not help performance. In nearly all cases its best to use the defaults by removing or commenting out these four buffer config lines. For a more gradual approach, reduce them in half to free up wasted RAM, keep reducing them towards default values over time. I’ve actually seen improved throughput by reducing these buffers. But there’s really no performance gains from increasing these buffers except in cases of very high traffic and/or other special circumstances. Avoid arbitrarily increasing these!
A velocidade do acesso à memória
Ao contrário da lógica comum, o acesso à memória não é O (1).
Mais RAM você tem, mais lento é o acesso a qualquer dado nesta RAM.
Portanto, usar menos memória RAM pode fornecer acesso mais rápido à RAM - esta é uma regra geral, não se aplica apenas ao MySQL. Por favor, veja O Mito da RAM - por que uma memória aleatória é lida? (√N)
Agora vamos voltar ao MySQL join_buffer_size.
Ajustando o MySQL join_buffer_size
The join_buffer_size is allocated for each full join between two tables. From MySQL’s documentation the join_buffer_size is described as: “The minimum size of the buffer that is used for plain index scans, range index scans, and joins that do not use indexes and thus perform full table scans.” It goes on to say: “Memory allocation time can cause substantial performance drops if the global size is larger than needed by most queries that use it.” The join buffer is allocated to cache table rows when the join can’t use an index. If your database(s) suffer from many joins performed without indexes it cannot be solved by just increasing join_buffer_size. The problem is “joins performed without indexes” and thus the solution for faster joins is to add indexes.
Altere a configuração do MySQL para registrar as consultas sem índices, para que você possa encontrar essas consultas e adicionar índices e / ou modificar o aplicativo que envia essas consultas incorretas. Você deve habilitar "log-queries-não-usando-índices"
Em seguida, procure por associações não indexadas no log de consultas lentas.