Solo hay una variable de estado que se preocupa por sort_buffer_size . Eso es lo que tienes en el mensaje en la pregunta: Sort_merge_passes . La documentación de MySQL dice:
Sort_merge_passes: el número de pasadas de fusión que el algoritmo de clasificación ha tenido que hacer. Si este valor es grande, debería considerar aumentar el valor de la variable de sistema sort_buffer_size .
Tenga en cuenta una cosa sobre sort_buffer_size
Si ve muchos Sort_merge_passes por segundo en la salida SHOW GLOBAL STATUS, puede considerar aumentar el valor sort_buffer_size para acelerar las operaciones ORDER BY o GROUP BY que no pueden mejorarse con la optimización de consultas o la indexación mejorada
Si bien elevar sort_buffer_size
puede ayudar a las consultas con GROUP BY
sy ORDER BY
s, es mejor mejorar las consultas que puede mejorar y agregar índices que puede utilizar el Optimizador de consultas.
La pregunta sigue siendo: ¿Cómo verifica los Sort_merge_passes ???
Use este código, para verificar cuántos Sort_merge_passes ocurrieron en los últimos 5 minutos. También calcula los 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;
Si encuentra que Sort_merge_passes y la tasa son demasiado altas, no dude en aumentar sort_buffer_size . Supongamos que quieres subir a 4M. Ejecutarías esto:
mysql> SET GLOBAL sort_buffer_size = 1024 * 1024 * 4;
Luego agregaría esto a my.cnf
[mysqld]
sort_buffer_size = 4M
Ejecutaría el código periódicamente para verificar otras veces picos de Sort_merge_passes .