TIL

9.2(2) ORDER BY 처리

9.2.3 ORDER BY 처리 (Using filesort)

소트 버퍼

정렬 알고리즘

정렬 처리 방법

ORDER BY가 사용되면 다음 3가지 처리 방법 중 하나로 정렬이 처리된다.

정렬 처리 방법 실행 계획의 EXTRA 칼럼 내용
인덱스를 사용한 정렬 별도 표기 없음
조인의 드라이빙 테이블만 정렬 Using filesort
조인 결과를 임시 테이블로 저장 후 정렬 Using temporary; Using filesort

정렬 처리 방법1 - 인덱스를 이용한 정렬

정렬 처리 방법2 - 조인의 드라이빙 테이블만 정렬

정렬 처리 방법3 - 임시 테이블을 이용한 정렬

정렬 처리 방법의 성능 비교

쿼리가 처리되는 방법을 다음의 2가지 방식으로 구분할 수 있다.

JDBC 라이브러리를 이용하는 경우 MySQL 서버로부터 스트리밍 방식으로 결과를 전달 받아도 받은 레코드를 내부 버퍼에 담아두었다가 클라이언트 애플리케이션에게 모든 결과를 한 번에 반환한다. 즉 JDBC 자체적으로 버퍼링을 하는 것이다. JDBC가 자체 버퍼링을 하는 이유는 이 방식이 전체 처리(Throughput) 시간이 짧고 MySQL과의 서버 통신 횟수가 적어 자원 소모가 줄어들기 때문이다. JDBC 버퍼링은 기본 작동 방식이며, 아주 대량의 데이터를 가져와야 할 때는 스트리밍 방식으로 변경할 수도 있다.

정렬 관련 상태 변수

FLUSH STATUS;
SHOW STATUS LIKE Sort%;