반응형

옵티마이저

    오라클 옵티마이저의 소프트파싱(soft parsing)와 하드파싱(hard parsing)

    소프트파싱와 하드파싱 이전장에서 설명하였듯이 옵티마이저가 쿼리를 수행하기 위해서 파싱, 최적화, 로우 소스 생성과정을 통해 내부 프로시저를 만든다. 이렇게 만든 내부프로시저를 반복해서 재사용할 수 있도록 캐싱해두는 메모리 공간을 라이브러리 캐시라고 한다. 라이브러리캐시는 System Global Area(SGA) 구성요소이다. SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간이다. 사용자가 작성한 SQL 문장을 실행할 때 SGA에 캐시되어있는 내부 프로시저를 찾으면 바로 사용하는데 이를 소프트 파싱이라고 하고 내부 프로시저가 존재하지 않아 다시 처음부터 파싱, 최적화, 로우 소스 생성 단계를 거쳐야하는 것을 하드파싱이라고 한다. 그럼 소프트 파싱..

    옵티마이저에게 사용할 인덱스(index) 힌트주기

    기본적으로 옵티마이저가 SQL을 수행할 때 인덱스를 통계정보를 이용하여 선택하지만 그것은 정확한 것이 아니라 자신이 알고 있는 수준까지 정보를 가지고 판단하기에 정확한 인덱스를 사용자가 선택하여 수행할 수 있다. 그 방법으로 쿼리 수행시 힌트를 부여하는 것이다. 힌트를 부여하는 방법은 다음과같다.1select /*+ 인덱스명(t) */ * from t where deptno = 10 and no = 1;cs - /*+ 인덱스 */를 사용하여 힌트를 부여한다.- 인덱스명을 여러개 나열하고 싶을때는 공백으로 구분하여 나열한다. ,를 사용하는 경우 앞에 인덱스만 사용된다.- 인덱스 내부에 테이블을 적을때 스키마명까지 입력하면 안된다. index(scott.tmp)- From 절에 Alias를 사용했다면 힌트에..

    SQL 최적화 과정과 옵티마이저 소개 및 역할안내

    SQL 최적화 과정 오라클을 기준으로 SQL의 최적화 과정은 다음과 같다. 1. SQL 파싱-> 파싱트리 생성-> 문법적 오류 확인-> 의미상 오류 확인 (없는 컬럼, 테이블 접근)2. SQL 최적화-> 옵티마이저가 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 가장 최적의 실행경로로 선정 3. 로우 소스 생성-> 선정된 실행경로를 실제 실행 가능 코드로 변경 (Row-Source Generator)가 역할 수행 그럼 이런 최적화를 진행하는 옵티마이저는 어떤것이고 또 어떻게 진행이되는가? SQL 옵티마이저란?- 옵티마이저는 사용자의 작업을 가장 효율적으로 수행할 수 있는 최적의 데이터 액세스 경로를 선택해주는 DBMS 엔진을 말한다. 최적화 단계 - 쿼리를 수행할 실행계획 찾기- Data Dicti..

반응형