Há apenas uma variável de status que se preocupa com sort_buffer_size . É isso que você tem na mensagem de volta à pergunta: Sort_merge_passes . A documentação do MySQL diz:
Sort_merge_passes: o número de passes de mesclagem que o algoritmo de classificação teve que fazer. Se esse valor for grande, considere aumentar o valor da variável de sistema sort_buffer_size .
Lembre-se de uma coisa sobre o sort_buffer_size
Se você ver muitos Sort_merge_passes por segundo na saída SHOW GLOBAL STATUS, considere aumentar o valor sort_buffer_size para acelerar as operações ORDER BY ou GROUP BY que não podem ser aprimoradas com otimização de consulta ou indexação aprimorada
Embora o aumento sort_buffer_size
possa ajudar as consultas com GROUP BY
s e ORDER BY
s, é melhor melhorar as consultas e adicionar índices que podem ser usados pelo Query Optimizer.
A pergunta permanece: Como você verifica os Sort_merge_passes ???
Use esse código para verificar quantas Sort_merge_passes ocorreram nos últimos 5 minutos. Ele também calcula o Sort_merge_passes por hora.
SET @SleepTime = 300;
SELECT variable_value INTO @SMP1
FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes';
SELECT SLEEP(@SleepTime) INTO @x;
SELECT variable_value INTO @SMP2
FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes';
SET @SMP = @SMP2 - @SMP1;
SET @SMP_RATE = @SMP * 3600 / @SleepTime;
SELECT @SMP,@SMP_RATE;
Se você encontrar o Sort_merge_passes e a taxa muito alta, fique à vontade para aumentar o sort_buffer_size . Suponha que você queira aumentar para 4M. Você executaria isso:
mysql> SET GLOBAL sort_buffer_size = 1024 * 1024 * 4;
Você adicionaria isso ao my.cnf
[mysqld]
sort_buffer_size = 4M
Você executaria o código periodicamente para verificar outras vezes os picos de Sort_merge_passes .