9장 옵티마이저와 힌트

2024. 7. 1. 19:22BOOKS/Real MySQL 8.0

문제 1. 정렬해야 할 레코드 수가 소트 버퍼로 할당된 공간보다 큰 경우 어떻게 처리하나요?

메모리의 소트 버퍼에서 정렬을 수행하고 그 결과를 임시로 디스크에 기록
다음 레코드를 가져와서 다시 정렬해서 반복적으로 디스크에 임시 저장
각 버퍼 크기만큼 정렬된 레코드를 다시 병합하면서 정렬 수행 ⇒ 멀티 머지

문제 2. P2. 투 패스 정렬 방식을 사용하는 경우는?

레코드의 크기가 max_length_for_sort_data 시스템 변수에 설정된 값보다 클 때
BLOB이나 TEXT 타입의 컬럼이 SELECT 대상에 포함될 때

문제 3. 조인 버퍼를 사용하면 정렬 순서가 흐트러질 수 있는 이유를 설명해주세요.

조인 버퍼를 사용할 경우 드라이빙 테이블에서 조건에 맞는 레코드들을 조인 버퍼에 저장 후 드라이븐 테이블을 읽고 조인 버퍼에서 일치하는 레코드를 찾는 방식으로 처리되기 때문에 정렬 순서가 흐트러질 수 있다.

문제 4. 해시 조인 처리 단계에 대해서 설명해주세요.

빌드 단계: 조인 대상 테이블 중 레코드 건수가 적어서 해시 테이블로 만들기 용이한 테이블을 골라 메모리에 해시 테이블을 생성하는 작업 수행
프로브 단계 : 나머지 테이블의 레코드를 읽어서 해시 테이블의 일치 레코드를 찾는 과정

'BOOKS > Real MySQL 8.0' 카테고리의 다른 글

13장 파티션  (0) 2024.07.01
10장 실행계획  (0) 2024.07.01
8장 인덱스  (0) 2024.07.01
5장 트랜잭션  (0) 2024.07.01
4장 아키텍처  (0) 2024.07.01