더북(TheBook)

PARALLEL 힌트를 이용하는 방법

병렬 쿼리를 이용하는 두 번째 방법은 PARALLEL 힌트를 사용하는 것이다. SQL문을 실행하면 오라클 옵티마이저는 구문을 분석하고 여러 가지 알고리즘을 사용해 해당 SQL문을 처리하는데, 힌트를 주면 옵티마이저는 힌트에 따라 SQL문 처리 방식을 변경한다. 보통 힌트는 SQL문을 튜닝할 때 사용하는 경우가 대부분인데 병렬처리를 할 때도 사용한다. 병렬 처리를 위한 힌트 구문은 다음과 같다.

    /*+ PARALLEL(테이블명 degree수) */

PARALLEL 뿐만 아니라 모든 힌트는 ‘/*+ 힌트구문 */’ 형태로 사용하며 SELECT 바로 다음에 기술한다.

그럼 힌트를 어떤 식으로 사용하는지 알아 보자.

입력

    DECLARE
      -- 변수 선언 ...
    BEGIN

      SELECT /*+ PARALLEL(a 4), PARALLEL(b 4), */  
             a.column1, a.column2, ...
        INTO ...
        FROM TABELA a
             TABLEB b
       WHERE a.column_1 = b.column_1
        AND ...

      --나머지 로직
    ...
    END;

힌트를 사용하면 병렬 쿼리는 힌트가 사용된 SQL문에만 적용된다. 또한 기본적으로 PARALLEL QUERY 옵션은 활성화된 상태이므로 별도로 활성화하거나 비활성화할 필요는 없는데, 만약 비활성 상태에서 힌트를 적용하면 병렬 쿼리가 수행되지 않는다.

좀더 설명하면, ALTER SESSION으로 설정하는 병렬 쿼리 파라미터를 옵티마이저 파라미터 혹은 옵티마이저 환경 변수라고 한다. ‘ALTER SESSION ENABLE PARALLEL QUERY’를 수행하면 ‘PARALLEL_QUERY_MODE’란 환경 변수 값이 ‘ENABLED’로, 반대의 경우는 ‘DISABLED’로 변경된다. 그런데 이 변수의 디폴트 값이 ‘ENABLED’이므로 굳이 비활성화하지 않았다면 항상 활성 상태로 남아 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.