1. 옵티마이저
뭐 사전적 정의 이런거는 많이들 봤을 테고, 그냥 단순하게 사용자를 대신해서 프로그래밍 해주는 서포터라고 보면 된다. 아이언맨의 자비스, 배트맨의 루시우스 폭스 같은 느낌이랄까?? 여튼 고스트바둑왕의 느낌으로 다가 우리는 SQL을 잘 작성만 해주면 된다.
굳이 멋지게 정리하자면, 사용자가 원하는 작업을 가장 효과적으로 실행 할 수 있는 최적의 경로를 선택해서 자동으로 프로시저를 생성해주는 DBMS의 핵심엔진이다.
2. 4세대 언어
- SQL은 구조화된 질의어이다. 그러니까 우리는 육하원칙에 따라 질문하는 것 처럼 논리적인 기획과 설계를 바탕으로 결과 집합을 요구하는 쿼리를 작성한다.
- 어떤식으로 처리되는지? 그런 프로세스를 직접 기술하지는 않는다.
3. 실행계획과 비용
- 사용자의 구조화된 질문 (SQL 쿼리)를 전달 받아서 해당 작업에 대한 실행계획들을 찾아낸다.
- 데이터 딕셔너리에 미리 수집한 오브젝트와 통계정보를 이용해 예상 비용을 산정한다.
- 비용이 가장 적은 실행계획을 선택한다.
- 지도에서 길찾기 할때 여러 경로를 표현해주는데 거기서 최소시간이나 최단거리를 보여주는 것이라고 생각하면 된다.
- 하지만 옵티마이저도 결국 사람이 만든 것, 완벽하다고 볼 수는 없다.
- 그렇기 때문에 우리는 이러한 실행계획을 DBMS_XPLAN같은 도구를 이용해 미리 파악하고, 쿼리를 직접적으로 튜닝함으로써 최적의 효과를 기대할 수 있다.
4. 비용기반 옵티마이저
- 말그대로 실행계획에 따른 비용을 기반으로 최적화를 수행하는 옵티마이저다.
- 비용이란 쿼리를 수행하는데 소요되는 양이나 시간을 말한다.
5. 규칙기반 옵티마이저
- 미리 정해 놓은 우선순위에 따라 경로를 평가하고 실행계획을 선택하는 옵티마이저다.
- 중소형 데이터베이스에 적합하고 대용량 데이터에는 다양한 변수를 고려하지 못하기 때문에 부적합 하다.
6. 힌트
- 특정 실행계획을 선택하게끔 옵티마이저에게 강제하는 작업이다.
- /*+ 힌트 */ 를 쿼리안에 넣어서 실행한다.
- SQL의 꽃이라고 ?? 한다.
본 글은 작성자가 공부한 것을 기록하기 위하여 작성한 것으로, 100% 정확한 정보가 아닐 수 있습니다. 정정을 요청하셔도 좋고 여러 의견을 주시면 너무너무 환영이고 감사하겠습니다.
'Language > SQL 튜닝' 카테고리의 다른 글
2장. [옵티마이저] 2-2. SQL 처리 과정 (0) | 2021.10.09 |
---|---|
1장. [SQL 분석 도구] 1-5. DBMS_XPLAN 패키지 (0) | 2021.10.07 |
1장. [SQL 분석 도구] 1-4. V$SQL (0) | 2021.10.06 |
1장. [SQL 분석 도구] 1-3. 트레이스 수집 (0) | 2021.10.05 |
1장. [SQL 분석 도구] 1-2. AutoTrace (0) | 2021.10.04 |