티스토리 뷰

[옵티마이저 수행절차 및 질의 변환]


옵티마이저란 사용자가 작성한 쿼리를 최적의 조건으로 데이터를 찾기 위하여 질의 변환 및 수행절차에 따라 처리하게 됩니다.



이런 과정에 대해서 자세히 알아보도록 하겠습니다.


1) 수행절차



  1. 사용자가 실행한 SQL은 데이터 딕셔너리를 참조하여 파싱을 수행합니다. 옵티마이저는 파싱 결과를 이용해 논리적으로 적용 가능한 실행계획 형태로 선택하고, 힌트를 감안하여일차적으로 잠정적인 실행계획들을 생성 합니다.


  2. 데이터 딕셔너리 정보(테이블 저장구조, 인덱스 구조, 파티션 형태 등)와 통계정보(저장건수, 데이터의 분포도 등), 비교연산자 등을 감안하여 각 실행 계획의 비용을 계산합니다.


  3. 실행계획들의 산출된 비용을 비교하여 가장 최소의 비용을 가진 실행계획을 선택합니다. (최저가 입찰 방식이므로 항상 최적의 결정이라고 할 수는 없습니다.)




2) 질의 변환

  보다 양호한 실행계획을 얻을 수 있도록 적절하게 SQL 형태를 변환 ( Mix of coast and heuristics )



  1. 조건연산 : 사용자 쿼리 기준으로 미리 계산 또는 이해 쉬운 형태로 변환

  


  2. 수식연산 : 사용자 쿼리 기준으로 미리 수식 표현을 이해 쉬운 형태로 변환



  


  3. 이행성 규칙 : 조건절의 값이 상수 값의 경우 이행성 규칙에 의해 쿼리 변환

  


  4. 표현식 제거 : 불필요한 expression 사용 시 해당 문장을 제거하는 쿼리 변환

  


  5. View Merging : 뷰 정의 시에 지정한 View SQL을 엑세스가 수행되는 ACCESS SQL에 병합하는 형태로 변환

  

  6. SubQuery Unnesting : Subquery 형태를 일반 조인형식으로 변환하여 다양한 실행계획 시도

  

  7. Query Rewrite(MView) : MView는 테이블과 논리적 관계를 갖는 물리적 집합이며, 최적의 집합을 처리하도록 쿼리 변환

  

  8. OR Expansion : OR 형태의 처리 주관 조건의 경우 UNION ALL 형태로 질의 변환


옵티마이징 수행절차 및 질의 변환에 대해서 알아보았습니다.

오라클이 어떤 절차와 쿼리를 변환하는지 이해하신다면, 쿼리를 작성하실때 도움 되실거라 생각합니다.




댓글