sort_buffer_size를 처리 하는 상태 변수는 하나뿐입니다 . : 그건 당신이 문제의 메시지 뒤에이 무엇 Sort_merge_passes . MySQL 설명서는 다음과 같이 말합니다.
Sort_merge_passes : 정렬 알고리즘이 수행해야하는 병합 패스 수입니다. 이 값이 크면 sort_buffer_size 시스템 변수 의 값을 늘리는 것을 고려해야 합니다.
sort_buffer_size 에 대해 한 가지 명심하십시오
SHOW GLOBAL STATUS 출력에 초당 많은 Sort_merge_passes가 표시되면 sort_buffer_size 값을 증가시켜 쿼리 최적화 또는 개선 된 색인 작성으로 개선 할 수없는 ORDER BY 또는 GROUP BY 조작의 속도를 높일 수 있습니다.
을 올리면 s 및 s를 사용 sort_buffer_size
하는 쿼리에 도움이 되지만 쿼리 최적화 프로그램에서 사용할 수있는 인덱스를 추가하고 개선 할 수있는 쿼리를 개선하는 것이 좋습니다.GROUP BY
ORDER BY
질문 남아 : Sort_merge_passes를 어떻게 확인합니까 ???
이 코드를 사용하여 지난 5 분 동안 발생한 Sort_merge_passes 수를 확인하십시오. 또한 시간당 Sort_merge_passes를 계산합니다.
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;
Sort_merge_passes와 속도가 너무 높다면 sort_buffer_size를 자유롭게 늘리십시오 . 4M으로 올리려고한다고 가정하십시오. 당신은 이것을 실행할 것입니다 :
mysql> SET GLOBAL sort_buffer_size = 1024 * 1024 * 4;
그런 다음 이것을 my.cnf에 추가하십시오.
[mysqld]
sort_buffer_size = 4M
다른 시간에 Sort_merge_passes 스파이크 를 확인하기 위해 정기적으로 코드를 실행합니다 .