데이터베이스 옵티마이저: Difference between revisions

From CS Wiki
No edit summary
No edit summary
 
Line 12: Line 12:
*판단 기준이 분명하므로 사용자도 계측 가능
*판단 기준이 분명하므로 사용자도 계측 가능
*현실적인 통계정보를 감안하지 않으므로 판단에 오차가 발생할 수 있음
*현실적인 통계정보를 감안하지 않으므로 판단에 오차가 발생할 수 있음
*힌트<ref>힌트 사용 시 CBO로 전환됨</ref>, HASH JOIN, PARTITIONED TABLE 등 사용 불가<ref>힌트, HASH JOIN, PARTITIONED TABLE, IOT, REVERSE KEY INDEX, FUNCTION BASED INDEX, STAR JOIN, QUERY REWRITE, BITMAP INDEX 등 사용 불가(실전 사례로 살펴보는 SQL 튜닝 비법, 25-26p, 인사이트, 강남이 외 7명 저)</ref>


===비용 기반 옵티마이저(CBO)===
===비용 기반 옵티마이저(CBO)===
Line 20: Line 21:
*판단 기준을 사용자가 미리 예측하기 어려움
*판단 기준을 사용자가 미리 예측하기 어려움
*실제 실행 비용 기반의 정확한 판단
*실제 실행 비용 기반의 정확한 판단
*ORACLE 등에선 CBO를 기본으로 채택<ref>[https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=295&dbnum=126889&mode=detail&type=techreport 옵티마이저의 원리와 특징(한국데이터산업진흥원)]</ref>


== 옵티마이저 취사선택 ==
==옵티마이저 취사선택==


* 인덱스 사용 등의 실행계획은 옵티마이저의 자의적인 계획에 따라 취사 선택됨
*인덱스 사용 등의 실행계획은 옵티마이저의 자의적인 계획에 따라 취사 선택됨
* 옵티마이저의 판단이 잘못되었을 경우 선택을 강제하기 위해 Hint 사용
*옵티마이저의 판단이 잘못되었을 경우 선택을 강제하기 위해 Hint 사용
 
== 각주 ==

Latest revision as of 21:57, 28 August 2021


Database Optimizer
주로 관계형 데이터베이스에서 주어진 질의에 대해 최소의 비용으로 실행계획을 수립하는 기능

종류[edit | edit source]

규칙 기반 옵티마이저(RBO)[edit | edit source]

Rule Based Optimizer
  • 인덱스 구조, 연산자 구성 등 정해진 조건들을 기반으로 판단하여 계획 수립
  • 판단 기준이 분명하므로 사용자도 계측 가능
  • 현실적인 통계정보를 감안하지 않으므로 판단에 오차가 발생할 수 있음
  • 힌트[1], HASH JOIN, PARTITIONED TABLE 등 사용 불가[2]

비용 기반 옵티마이저(CBO)[edit | edit source]

Cost Based Optimizer
  • 여러 계획에 대한 비용을 산정해 보고 그 중에서 최소 비용으로 선택
  • 판단 기준을 사용자가 미리 예측하기 어려움
  • 실제 실행 비용 기반의 정확한 판단
  • ORACLE 등에선 CBO를 기본으로 채택[3]

옵티마이저 취사선택[edit | edit source]

  • 인덱스 사용 등의 실행계획은 옵티마이저의 자의적인 계획에 따라 취사 선택됨
  • 옵티마이저의 판단이 잘못되었을 경우 선택을 강제하기 위해 Hint 사용

각주[edit | edit source]

  1. 힌트 사용 시 CBO로 전환됨
  2. 힌트, HASH JOIN, PARTITIONED TABLE, IOT, REVERSE KEY INDEX, FUNCTION BASED INDEX, STAR JOIN, QUERY REWRITE, BITMAP INDEX 등 사용 불가(실전 사례로 살펴보는 SQL 튜닝 비법, 25-26p, 인사이트, 강남이 외 7명 저)
  3. 옵티마이저의 원리와 특징(한국데이터산업진흥원)