Zero to Hero
Published 2020. 12. 30. 11:48
친절한 SQL 튜닝 01 Review

SQL 최적화

1. SQL 파싱

사용자로부터 SQL을 전달받으면 가장 먼저 SQL 파서(Parser)가 파싱을 진행한다.

 

파싱 순서

1. 파싱 트리 생성: SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성

2. Syntax 체크: 문법적 오류가 없는지 확인, 예를 들어 사용할 수 없는 키워드를 사용했거나 순서가 바르지 않거나 누락된 키워드가 있는지 확인

3. Semantic 체크: 의미상 오류가 없는지 확인, 예를 들어 존재하지 않는 테이블 또는 칼럼을 사용했는지, 사용한 오브젝트에 대한 권한이 있는지 확인

 

2. SQL 최적화

옵티마이저(Optimizer)가 역할하는 단계. 옵티마이저는 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행 경로를 생성해서 비교한 후 가장 효율적인 하나를 선택함

데이터베이스의 성능을 경정하는 가장 핵심적인 엔진

 

3. 로우 소스 생성

SQL 옵티마이저가 선택한 실행 경로를 실제 실행 가능한 코드 또는 프로시저 형태로 포맷팅 하는 단계

로우 소스 생성기(Row-Source Generator)가 역할을 함

 

SQL Optimizer의 최적화 단계

1. 사용자로부터 전달받은 쿼리를 수행하는 데 후보군이 될만한 실행계획들(Execution Plan)을 찾아낸다.

2. 데이터 딕셔너리에 미리 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상 비용을 산정한다.

3. 최저 비용을 나타내는 실행계획을 선택한다.

 

옵티마이저, SQL 파서, 로우 소스 생성기는 별도 프로세스가 아니라 서버 프로세스가 가진 기능(Function) 중 하나이다.

 

비용을 찾는 방법

SQL Plus에서 AutoTrace를 활성화하기

옵티마이저 힌트

개발자가 정량적인 수치 정보에 담을 수 없는 데이터나 도메인 특성을 활용해 옵티마이저에게 알려줘 액세스 경로를 바꾸는 방법

사용법: 주석 기호에 "+"를 붙이기

 

출처 및 참고문헌

친절한 SQL 튜닝
국내도서
저자 : 조시형
출판 : 디비안(주) (DBian) 2018.06.01
상세보기

'Review' 카테고리의 다른 글

친절한 SQL 튜닝 03  (0) 2020.12.30
친절한 SQL 튜닝 02  (0) 2020.12.30
데이터베이스를 지탱하는 기술 06  (0) 2020.12.27
데이터베이스를 지탱하는 기술 05  (0) 2020.12.27
데이터베이스를 지탱하는 기술 04  (0) 2020.12.27
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!