Admin/Tuning 5

Subquery, WITH 절

WITH 절 : 테이블을 반복적으로 Access 할때, 힌트를 명시적으로 적을것. /*+ inline */ /*+ materialized */ result set을 temp영역에 저장한후 사용. temp 영역에서 data를 가져오니까, Main Query 에서 index를 사용하지 못함. 7. 서브쿼리를 정확히 이해하고 사용하자. - 서브쿼리 : where 절에서 사용하는 query - 스칼라 서브쿼리 : select 절에서 - 인라인 뷰 : from 절에서 종류 : - 후 수행 서브쿼리 : 서브쿼리가 뒤에 엑세스되는 형태 inner table, probe table 역할 - 선 수행 서브쿼리 : 서브쿼리가 먼저 엑세스되는 형태 driving table, build table 역할 - 서브쿼리 Unnes..

Admin/Tuning 2013.05.23

인덱스 컬럼의 분포도 및 순서

인덱스를 이용해야만 성능은 향상되는가 우리가 SQL을 작성하면서 성능을 보장하기 위해 가장 먼저 무엇을 고려하는가? 가장 먼저 고려하는 사항은 인덱스일 것이다. 많은 경우에 작성한 SQL에 대해 인덱스를 생성한다면 성능을 보장 받을 수 있다고 생각하게 된다. 과연, 인덱스만 생성한다면 해당 SQL의 성능을 보장할 수 있겠는가? 어떤 SQL은 인덱스 때문에 성능이 엄청 저하될 수 있는 것이 현실이다. 이러한 경우는 경험해본 사람이라면 쉽게 이해할 수 있을 것이다. 그렇다면 어떤 경우의 SQL에는 인덱스가 필요하고 어떤 경우의 SQL에는 인덱스가 필요하지 않은 것일까? 인덱스를 이용하여 성능을 최적화하기 위해서 어떤 컬럼으로 인덱스를 구성할 것인가에 대한 것보다도 해당 SQL이 인덱스를 이용해야 할지 아니면..

Admin/Tuning 2008.05.07

옵티마이저의 비용계산 방법과 실행원리

1. SQL문 처리과정 옵티마이저의 비용계산 방법을 소개하기 전에 우선 SQL문의 처리과정의 대해 알아보자. 사용자가 실행하는 SQL문은 파서(Parser)에게 전달되고 파서는 데이터 딕셔너리 정보를 참조하여 SQL문에 대한 구문분석(Syntax와 Symantics)을 수행한다. 이 결과를 파스-트리(Parse-Tree)라고 한다. 파스-트리는 옵티마이저에게 전달되는데 오라클 데이터베이스에는 공식기반 옵티마이저(Rule-Based Optimizer)와 비용기반 옵티마이저(Cost-Based Optimizer)가 있다. 비용기반 옵티마이저에 의해 산출된 적정 플랜(Optimal Plan)은 로우 소스 생성기(Row Source Generator)에게 전달되고 이것은 실행 계획(Execution Plan)으..

Admin/Tuning 2008.04.30

Buffer Cache Advisory(DB_CACHE_ADVICE) - 9i

(9I) BUFFER CACHE ADVISORY : DB_CACHE_ADVICE, V$DB_CACHE_ADVICE =============================================================== PURPOSE ------- Oracle 9i에서 Buffer Cache의 크기를 정하기 위해 참조할 수 있는 DB_CACHE_ADVICE parameter와 V$DB_CACHE_ADVICE 에 대해 알아보기로 한다. Explanation ----------- Oracle 9i부터는 SGA의 영역의 크기를 온라인 상태에서 바꿀 수 있는 Dynamic SGA 기능이 제공된다. 동적으로 바꿀 수 있는 주요 요소로는 Shared Pool, Large Ppool,Buffer Cache ..

Admin/Tuning 2007.09.05