Firebird 쿼리 최적화
Firebird 쿼리 최적화는 SELECT 문이 어떻게 실행되는지, 즉 플랜, 통계, 접근 방법, 튜닝 패턴, 그리고 MON$ 및 Trace API로 느린 쿼리를 찾는 방법을 다룹니다.
교육 과정
-
SELECT 쿼리의 성능 - 쿼리가 실행되는 방식
- 클라이언트-서버 접근 방식
- 준비, 플랜 생성, 실행, 페치, 버퍼링
-
실행 통계
- 읽기, 쓰기, 페치, 시간
- 데이터베이스 캐시, 디스크, CPU
- 가비지가 실행에 미치는 영향
- 캐시 히트 (Classic vs SuperServer)
-
접근 방법 / 데이터 경로
- NATURAL 스캔
- INDEX 검색: B-트리, 레코드 포인터, 방향, 예제
- 강제 인덱스 사용, 인덱스 비트 병합
- 테이블 카디널리티와 인덱스 선택도
- WHERE에서 인덱스 비활성화
- 인덱스 ORDER vs SORT (
firebird.conf설정) - ORDER BY / GROUP BY에서 인덱스 비활성화
- 저장 프로시저 및 뷰에서의 플랜
-
쿼리 튜닝
- PLAN 읽는 방법
- 옵티마이저 조정
WHERE FIELD IN (…)- LIKE, CONTAINING, STARTING WITH
- JOIN: 암시적 vs 명시적, 잘못된 조인, LEFT/RIGHT, 셀프 조인
- UPDATE + SELECT
- MAX, MIN, COUNT, AVG, SUM
- IN vs EXISTS vs MERGE
WHERE (X AND Y) OR (K AND N)
-
MON$ 및 Trace API로 느린 쿼리 추적
- MON$와 Trace란 무엇인가
- 중요한 MON$ 필드
- Trace API 매개변수 및 출력
- 도구 (HQbird 모니터링 포함)