<오라클 성능 고도화 원리와 해법2> Ch04-08 공통 표현식 제거
오라클 성능 고도화 원리와 해법2 - Ch04-08 공통 표현식 제거 같은 조건식이 여러 곳에서 반복 사용될 경우, 오라클은 해당 조건식이 각 로우당 한 번씩만 평가되도록 쿼리를 변환한다. 이를 ‘공통 표현식 제거’라고 하며, _eliminate common_subexpr 파라미터를 통해 제어한다. 예를 들어, 위와 같이 deptno에 대한 조인 ...
오라클 성능 고도화 원리와 해법2 - Ch04-08 공통 표현식 제거 같은 조건식이 여러 곳에서 반복 사용될 경우, 오라클은 해당 조건식이 각 로우당 한 번씩만 평가되도록 쿼리를 변환한다. 이를 ‘공통 표현식 제거’라고 하며, _eliminate common_subexpr 파라미터를 통해 제어한다. 예를 들어, 위와 같이 deptno에 대한 조인 ...
오라클 성능 고도화 원리와 해법2 - Ch04-07 OR-Expansion (1) OR- Expansion 기본 만약 아래 쿼리가 그대로 수행된다면 OR 조건 때문에 Full Table Scan으로 처리될 것이다. 아니면 Index Combine(1장3절 참조)이 작동할 수도 있다(스크립트 Ch4 19.kt 참조). select * from em...
오라클 성능 고도화 원리와 해법2 - Ch04-06 조인 제거 1:M 관계인 두 테이블을 조인하는 쿼리문에서 조인문을 제외한 어디에서도 1쪽 테이블을 참조하지 않는다면, 쿼리 수행 시 1쪽 테이블은 읽지 않아도 된다. 결과 집합에 영향을 미치지 않기 때문이다. 옵티마이저는 이 특성을 이용해 M쪽 테이블만 읽도록 쿼리를 변환하는데, 이를 ‘조인 제거(...
오라클 성능 고도화 원리와 해법2 - Ch04-05 조건절 이행 ‘조건절이행(Transitive Predicate Generation, Transtive Closure)’이라고 불리는 이 쿼리 변환을 한마디로 요약하면, “A=B이고(B=C)이면(A=C)이다”는 추론을 통해 새로운 조건을 내부적으로 생성해 주는 쿼리 변환이다. “A>B이고(B&g...
오라클 성능 고도화 원리와 해법2 - Ch04-04 조건절 Pushing 뷰를 액세스하는 쿼리를 최적화할 때 옵티마이저는 우선적으로 뷰 Merging을 고려한다. 하지만 아래와 같은 이유로 뷰 Merging에 실패할 수 있다. • 복합뷰(ComplexView) Merging 기능이 비활성화됨 • 사용자가 no_merge 힌트 사용함 • Non-me...
오라클 성능 고도화 원리와 해법2 - Ch04-03 뷰 Merging (1) 뷰 Merging 이란? < 쿼리1 > SELECT * FROM (SELECT * FROM emp WHERE job = 'SALESMAN') a , (SELECT * FROM dept WHERE loc = 'CHICAGO') b WHERE a.deptno ...
오라클 성능 고도화 원리와 해법2 - Ch04-02 서브쿼리 Unnesting (1) 서브쿼리의 분류 서브쿼리는 SQL 문장 내에서 괄호로 묶인 별도의 쿼리 블록을 의미한다. 즉, 쿼리에 내장된 또 다른 쿼리다. 서브쿼리를 DBMS마다 조금씩 다르게 분류하는데, 오라클 매뉴얼에는 아래 3가지로 분류된다. 인라인뷰(InlineView): FR...
오라클 성능 고도화 원리와 해법2 - Ch04 쿼리 변환 오라클 성능 고도화 원리와 해법2 - Ch04-01 쿼리 변환이란? SELECT DISTINCT S.SNAME FROM S, SP WHERE S.S# = SP.S# AND SP.P# = 'P2' C.J.Date 박사는 그의 유명한 저서 ‘An Introduction to Database ...
오라클 성능 고도화 원리와 해법2 - Ch03-08 통계정보 2 (1) 전략적인 통계수집 정책의 중요성 지금까지 설명한 카디널리티와 비용 계산식의 세부 사항을 항상 기억할 필요는 없다. 다만, 그 원리를 이해함으로써 통계정보 수집이 얼마나 중요한지 깨닫는 것이 매우 중요하다. 4절 ‘통계정보 1’에서 개발자를 대상으로 통계정보의 기본 개념을 설명...
오라클 성능 고도화 원리와 해법2 - Ch03-07 비용 오라클 옵티마이저가 사용하는 비용 모델에는 I/O 비용 모델과 CPU 비용 모델 두 가지가 있다. I/O 비용 모델은 예상되는 I/O 요청(Call) 횟수만을 쿼리 수행 비용으로 간주해 실행 계획을 평가하는 반면 CPU 비용 모델은 여기에 시간 개념을 더해 비용을 산정한다. 비용 모델을 선택...