SQL(Structure Query Language - 구조적 질의 언어)
구조적 / 질의적 / 선천적
Parser > Optimizer > Row-source Generator > SQL Engine
사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 엑세스 경로를 선택해주는 dbms의 핵심 엔진
수행절차 : 쿼리를 수행할만한 후보 실행계획 생성 > 데이터 딕셔너리(Data Dictionary)에 수집해 둔 오브젝트 통계, 시스템 통계를 이용해 예상비용 산정 > 최저 비용을 나타내는 실행계획 선정
SQL 옵티마이저
사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 엑세스 경로를 선택해주는 dbms의 핵심 엔진
수행절차 : 쿼리를 수행할만한 후보 실행계획 생성 > 데이터 딕셔너리(Data Dictionary)에 수집해 둔 오브젝트 통계, 시스템 통계를 이용해 예상비용 산정 > 최저 비용을 나타내는 실행계획 선정
비용(cost)
쿼리를 수행하는 동안 발생할 것으로 예상한 I/O 횟수 또는 예상 소요시간
옵티마이저가 여러 통계정보를 활용해서 계산해낸 값
실측치가 아님
옵티마이저 힌트
통계정보가 정확하지 않거나 다른 이유로 옵티마이저가 잘못된 판단을 할 수 있음
이런 때 직접적으로 관여하여 더 좋은 실행계획으로 유도하는 매커니즘
힌트가 무시되는 경우 : 문법적으로 안맞는 경우 / 의미적으로 안 맞게 기술한 경우 / 잘못된 참조를 사용한 경우 / 논리적으로 불가능한 액세스 경로를 사용한 경우
사용자로부터 주어진 명령어(directives)로 인식
데이터베이스의 변경으로 힌트에 문제가 생긴 경우 DBMS마다 차이가 있다는 점을 인지하고, 변경 시 어플리케이션의 특성에 따른 적절한 조치가 필요(SQL Server는 에러 발생, Oracle은 에러 없음)