본문 바로가기
Database

PARALLEL 쿼리로 성능 향상

by 굿센스굿 2024. 12. 4.
반응형

 

오라클 DB에서 성능을 최적화하는 방법 중 하나는 PARALLEL(병렬) 쿼리를 사용하는 것입니다. PARALLEL 쿼리는 대규모 데이터를 처리하거나 복잡한 연산을 수행할 때 작업을 여러 개의 프로세스에서 동시에 처리하도록 하여 속도를 대폭 향상시킵니다. 이 글에서는 PARALLEL 쿼리의 작동 방식, 설정 방법, 주의사항, 그리고 실전 예제를 통해 활용 방안을 상세히 설명하겠습니다.


1. PARALLEL 쿼리란 무엇인가?

PARALLEL 쿼리는 대규모 데이터를 다룰 때 SQL 작업을 병렬로 나누어 여러 프로세스가 동시에 처리하게 하는 기능입니다. 데이터베이스는 기본적으로 직렬(Sequential) 처리 방식으로 작업을 수행하지만, 병렬 처리를 사용하면 다음과 같은 장점을 얻을 수 있습니다:

  • 처리 속도 향상: 데이터가 클수록 병렬 처리로 인한 성능 향상이 두드러집니다.
  • 리소스 활용 극대화: CPU, 메모리, 디스크 I/O 등 서버 자원을 효율적으로 사용할 수 있습니다.
  • 대규모 데이터 분석에 적합: ETL 작업이나 대량 데이터 조회 시 특히 유용합니다.

2. PARALLEL 쿼리 설정 방법

병렬 처리를 적용하려면 SQL 쿼리와 데이터베이스 객체에 대해 명시적으로 PARALLEL 옵션을 설정해야 합니다.

(1) SQL 쿼리에서 PARALLEL 지정

SELECT /*+ PARALLEL(테이블명, 병렬도) */  
       컬럼1, 컬럼2  
FROM   테이블명;  

위 예제에서 PARALLEL(테이블명, 병렬도) 힌트를 사용하여 병렬도를 설정할 수 있습니다. 병렬도는 병렬 처리에 참여할 프로세스의 개수를 의미합니다.

(2) 테이블 수준에서 PARALLEL 설정

ALTER TABLE 테이블명 PARALLEL 병렬도;  

테이블 자체에 병렬 처리를 설정하면 해당 테이블에서 실행되는 모든 쿼리에 병렬 처리가 적용됩니다.

(3) 인덱스 수준에서 PARALLEL 설정

ALTER INDEX 인덱스명 PARALLEL 병렬도;  

대량의 데이터 조회 시 병렬 인덱스를 활용하면 쿼리 성능을 더욱 높일 수 있습니다.


3. PARALLEL 쿼리 실전 예제

예제 1: 대규모 데이터 조회

고객 데이터를 조회하는 쿼리에 병렬 처리를 적용해보겠습니다.

SELECT /*+ PARALLEL(orders, 4) */  
       customer_id, SUM(order_total)  
FROM   orders  
GROUP BY customer_id;  

이 쿼리는 orders 테이블을 4개의 프로세스로 나누어 동시에 처리합니다. 데이터가 많을수록 속도 개선 효과가 큽니다.

예제 2: 병렬 테이블 스캔

테이블 수준에서 병렬을 설정한 후 대량 데이터를 처리하는 경우입니다.

ALTER TABLE sales PARALLEL 8;  
SELECT product_id, SUM(sales_amount)  
FROM   sales  
GROUP BY product_id;  

ALTER TABLE 명령으로 설정된 병렬도는 테이블의 모든 작업에 자동으로 적용됩니다.

예제 3: 병렬 INSERT 작업

대량 데이터를 새로운 테이블에 삽입하는 경우 병렬 처리를 활용할 수 있습니다.

INSERT /*+ APPEND PARALLEL(new_table, 4) */  
INTO new_table  
SELECT *  
FROM   old_table;  

이 방법은 대량 데이터를 이관할 때 처리 속도를 크게 향상시킵니다.


4. PARALLEL 쿼리를 사용할 때의 주의사항

병렬 처리가 항상 성능을 향상시키는 것은 아닙니다. 다음의 주의사항을 고려해야 합니다:

  1. 리소스 과다 사용 가능성: 병렬도가 너무 높으면 CPU나 I/O 자원이 부족해질 수 있습니다.
  2. 작은 데이터셋에 비효율적: 병렬 처리의 오버헤드가 작동 속도를 느리게 할 수도 있습니다.
  3. 병렬 쿼리 큐잉(PQO): 동시에 여러 병렬 쿼리가 실행되면 큐잉이 발생하여 대기 시간이 길어질 수 있습니다.
  4. 적절한 병렬도 설정: 병렬도를 적절히 설정하여 시스템 성능을 최적화해야 합니다.

5. 결론

PARALLEL 쿼리는 대규모 데이터 처리 및 복잡한 연산에서 성능을 획기적으로 개선할 수 있는 강력한 도구입니다. 그러나 사용 시 시스템 리소스를 적절히 관리하고, 데이터 크기와 작업 특성을 고려한 병렬도를 설정하는 것이 중요합니다.

주요 요점 정리

  • 병렬 처리는 대규모 데이터를 효율적으로 처리하기 위한 핵심 기능입니다.
  • 적절한 SQL 힌트 및 테이블 설정으로 병렬 처리를 손쉽게 적용할 수 있습니다.
  • 실제 운영 환경에서는 리소스 관리와 병렬도 최적화가 필수입니다.

병렬 쿼리를 적절히 활용한다면, 데이터 처리 시간 단축과 시스템 효율성 향상이라는 두 마리 토끼를 잡을 수 있을 것입니다!

반응형