1. no_parallel_index
Index를 사용할때 병렬 처리를 하지 않도록한다.
기본적으로 Index 는 single access 이다. 하지만 INDEX FAST FULL SCAN 의 경우 Index 의 물리적인 Block을 순차적으로 읽기 때문에 병렬 ACCESS 가 가능하다. 따라서 해당 힌트를 사용하면 실행계획 생성시 INDEX FAST FULL SCAN 을 사용하지 않는 방법을 택한다. ( INDEX FULL SCAN ..)
2. no_parallel
Table Scan 시에 병렬 처리를 하지 않도록한다.
일반적으로 CREATE AS SELECT 질의시 옵티마이져가 일반적으로 병렬처리를 하게된다.
해당 힌트로 사용하여, 옵티마이져가 병렬처리하는것을 배제하도록한다.
해당 테이블을 어떠한 특정 정렬로 복사 하고자 할때 no_parallel 힌트를 사용하지 않으면,
병렬처리로 인하여 원본 테이블과는 다른 Block 개수를 가지게 될수 있다.
아마 FreeList 의 할당 방법 때문인것으로 보이는데 병렬처리시에 FreeList Contention 을 줄이기 위해 각기 다른 Data Block을 할당하게 된다.
따라서 동시에 여러 Data Block 에 대해서 Insert 작업이 일어나기 때문에, 각각의 데이터 사용률 또한 원본 테이블의 분포도와는 차이를 보이게 되며,
사용하는 Data Block 또한 일반적으로 원본 테이블이 사용한 Block 수 보다 조금더 사용하게 된다.
또한 Index 생성시 Clustering Factor 또한 변화가 있을것이다.
사용예제
/*+ no_parallel(DSS_REGION) no_parallel_index(DSS_REGION) */ * from v40.DSS_REGION;
댓글 없음:
댓글 쓰기