본문 바로가기

DataBase/Oracle

[펌]오라클 힌트

/*+ ALL_ROWS */
가장 좋은 단위 처리량의 목표로 문 블록을 최적화하기 위해 cost-based
접근 방법을 선택합니다. (즉, 전체적인 최소의 자원 소비)


/*+ CHOOSE */
최적자(optimizer)가 그 문에 의해 접근된 테이블을 위해 통계의 존재에
근거를 두는 SQL 문을 위해 rule-based 접근 방법과 cot-based 접근 방법
사이에 선택하게 합니다.

/*+ FIRST_ROWS */
가장 좋은 응답 시간의 목표로 문 블록을 최적화하기 위해 cost-based 접근
방법을 선택합니다. (첫번째 행을 되돌려 주는 최소의 자원 사용)

/*+ RULE */
explicitly chooses rule-based optimization for a statement
block
문 블록을 위하여, rule-based 최적화를 고르는

/*+ AND_EQUAL(table index) */
그만큼 실행 계획을 선택합니다. 그리고 여럿의 single-column 색인에
그 scan을 합병하는 접근 경로를 사용합니다.

/*+ CLUSTER(table) */
선택합니다. 그리고, 클러스터는 그 명시된 테이블을 접근하기 위해 살핍니다.

/*+ FULL(table) */
그 명시된 테이블을 위하여, 전체 테이블 scan을 고르는

/*+ HASH(table) */
선택합니다. 그리고, 해쉬는 그 명시된 테이블을 접근하기 위해 운율을 살핍니다.

/*+ HASH_AJ(table) */
변환, 그 명시된 테이블을 접근하는 해쉬 antijoin으로의 NOT IN 부속 조회

/*+ HASH_SJ (table) */
변환, 그 명시된 테이블을 접근하는 해쉬 anti-join으로의 NOT IN 부속 조회

/*+ INDEX(table index) */
그 명시된 테이블을 위하여, 색인 scan을 고르는

/*+ INDEX_ASC(table index) */
그 명시된 테이블을 위하여, ascending-range 색인 scan을 고르는

/*+ INDEX_COMBINE(table index) */
어떤 색인도 INDEX_COMBINE 암시를 위해 인수로서 주어지지 않는다면,
bitmap 색인의 결합이 어떤 부울의를 가장 좋은 수행 난이도 평가를 가지고
있든지 최적자는 이용합니다.
특별한 색인이 인수로서 주어진다면, 최적자는 그 특별한 bitmap 색인의
몇몇의 부울의 결합을 사용하려고 노력합니다.

/*+ INDEX_DESC(table index) */
그 명시된 테이블을 위하여, descending-range 색인 scan을 고르는

/*+ INDEX_FFS(table index) */
빠른 전체 색인 scan이 전체 테이블 scan이라기보다는 수행되게 합니다.

/*+ MERGE_AJ (table) */
변환, NOT IN 부속 조회, 그 명시된 테이블을 접근하기 위해 anti-join을
합병합니다.

/*+ MERGE_SJ (table) */
변환, 관련된 EXISTS 부속 조회, 접근으로 semi-join을 합병합니다,
그 명시된 테이블

/*+ ROWID(table) */
그 명시된 테이블을 위하여, ROWID에 의해 테이블 scan을 고르는

/*+ USE_CONCAT */
힘은 질의의 WHERE 문절에 있는 UNION ALL 집합 연산자를 사용하는 합성의
질의로 변형되는 OR 조건을 합쳤습니다.

/*+ ORDERED */
오라클이 어느 것에 순서로 테이블을 결합시키게 합니다.

/*+ STAR */
큰 있는 테이블이 최종 사용/회전율에 nested-loops를 결합시킨 힘은
그 색인에 결합합니다.

/*+ DRIVING_SITE (table) */
힘은 그것과 다른 오라클에 의해 선택된 사이트에 되는 실행을 질의합니다.

/*+ USE_HASH (table) */
오라클이 테이블이 다른 행 자원으로 해쉬 접합으로 명시되면서 각자와
합치게 합니다.

/*+ USE_MERGE (table) */
오라클이 테이블이 다른 행 자원으로 sort-merge 접합으로 명시되면서 각자와
합치게 합니다.

/*+ USE_NL (table) */
오라클이 그 명시된 테이블을 그 안의 테이블로 사용하는 nested-loops 접합과
각자와 다른 행 자원에 대한 명시된 테이블을 합치게 합니다.

/*+ APPEND */ , /*+ NOAPPEND */
데이타가 테이블로 단순히 덧붙여진다는 (or not)것 명시합니다; 무료인
현존하는 영역은 사용되지 않습니다.
단지 그 삽입 키 핵심어를 따르는 이 암시를 사용하시오.

/*+ NOPARALLEL(table) */
그 테이블이 PARALLEL 문절로 새로 만들어졌다면 테이블의 평행의 순차 검색을
무능하게 만듭니다.

/*+ PARALLEL(table, instances) */
당신이 그 연산을 위해 사용될 수 있는 동시의 슬레이브(slave) 프로세스의
요구된 수를 명시하는 것을 허락합니다.
그 세션이 가능하게 된 PARALLEL DML에 모드를 있다면, DELETE, INSERT, UPDATE
연산은 단지 parallelization에 대해 고려됩니다. (사용은 이 모드에 들어가기
위해 평행의 세션 DML을 변경합니다.)

/*+ PARALLEL_INDEX
그것은 PARALLEL 속성을 가지고 있는 색인을 분할했고 nonpartitioned했습니다.

/*+ NOPARALLEL_INDEX */
병렬이 색인을 나아가는 것을 속하게 하는 대체

/*+ CACHE */
그 블록이 찾아서 가져왔다는 것을 명시합니다. 그리고 그 테이블을 위해
그 암시에 놓여집니다. 그런데, 그것은 가장 요즈음 사용된 언제 그 버퍼 캐쉬,
가득한 테이블 scan에 있는 LRU 리스트의 끝입니다. 수행됩니다.

/*+ NOCACHE */
그 명시합니다. 그리고, 그 블록은 이 테이블을 위해 검색되면서 요즈음 사용된
언제 그 버퍼 캐쉬, 가득한 테이블 scan에 있는 LRU 리스트의 가장 작은 끝에
놓여집니다. 수행됩니다.

/*+ MERGE (table) */
오라클이 그 둘러싸는 질의 전에 복잡한 뷰나 부속 조회를 평가하게 합니다.

/*+ NO_MERGE (table) */
오라클이 mergeable 뷰를 합병하지 않게 하지 않습니다

/*+ PUSH_JOIN_PRED (table) */
개개 접합을 미는 것이 그 뷰 안으로 단정 하든 간에 비용 방식으로 최적자가
평가하게 합니다.

/*+ NO_PUSH_JOIN_PRED (table) */
접합 술부 중에서 그 뷰로 밀면서, 막는

/*+ PUSH_SUBQ */
원인은 그 실행 계획에서의 가장 이른 가능한 장소에 평가되는 부속 조회를
nonmerged했습니다.

/*+ STAR_TRANSFORMATION */
최적자가 그 변형이 사용된 가장 좋은 계획을 사용하는 제작


 
* DEGREE의 의미 및 결정
 
Parallel Query에서 degree란 하나의 operation 수행에 대한 server process의 개수 입니다.
이러한 degree 결정에 영향을 주는 요인들에는 다음과 같은 것들이 있습니다.
 
(1)  system의 CPU 갯수
(2)  system의 maximum process 갯수
(3)  table이 striping되어 있는 경우, 그 table이 걸쳐있는 disk의 갯수
(4)  data의 위치 (즉, memory에 cache되어 있는지, disk에 있는지)
(5)  query의 형태 (예를 들어 sorts 혹은 full table scan)
 
한 사용자만이 parallel query를 사용하는 경우, sorting이 많이 필요한
작업과 같은 CPU-bound 작업의 경우는 CPU 갯수의 1 ~ 2배의 degree가 적당하며,
sorting보다는 table scan과 같은 I/O bound 작업의 경우는 disk drive 갯수의 1 ~ 2배가 적당합니다.
 
동시에 수행되는 parallel query가 많은 경우에는 위의 각 사용자의 degree를
줄이거나 동시에 사용하는 사용자 수를 줄여야 합니다.

[출처] 오라클 힌트|작성자 매운거싫어

'DataBase > Oracle' 카테고리의 다른 글

[펌]오라클 힌트2  (0) 2009.12.30
[펌]오라클힌트1  (0) 2009.12.30
[펌]오라클 분석 함수  (0) 2009.09.03
[펌]오라클 그룹 함수  (0) 2009.09.03
[펌]오라클 기타 함수  (0) 2009.09.03