오라클 사용법

2025. 1. 11. 18:27DBMS/ORACLE Admin

반응형
 

1. 병렬 처리 (Parallel Processing)

오라클에서 병렬 처리(parallel processing)는 데이터를 동시에 여러 스레드나 프로세스를 통해 처리하여 성능을 향상시키는 방법으로 대규모 데이터베이스에서는 병렬 처리가 성능을 크게 향상시킬 수 있다.

병렬 처리 설정 관련 파라미터:

  • parallel_max_servers: 병렬 처리를 사용할 수 있는 최대 서버 프로세스 수를 설정한다.
  • parallel_min_servers: 병렬 처리를 위해 최소로 필요한 서버 프로세스 수를 설정한다.
  • parallel_degree_policy: 병렬 처리 정책을 설정한다. AUTO로 설정하면 오라클이 자동으로 병렬 처리 정도를 결정한다.
  • parallel_degree_limit: 병렬 처리 시 최대 병렬 처리 정도를 제한한다.

병렬 처리 활용:

병렬 처리로 쿼리 성능을 높이려면 PARALLEL 힌트를 사용할 수 있다. 예를 들어, 대용량 데이터를 처리할 때 병렬로 처리하도록 설정할 수 있다.

SELECT /*+ parallel(t, 4) */ column_name
FROM large_table t;

이 쿼리는 large_table 테이블에 대해 4개의 병렬 프로세스를 사용하여 쿼리를 실행한다.

2. 높은 처리량 (High Throughput)

높은 처리량은 많은 수의 트랜잭션을 빠르게 처리할 수 있고 트랜잭션 처리량을 극대화하려면 여러 가지 설정과 기술을 활용해야 한다:

트랜잭션 처리량을 향상시키는 방법:

  • 배치 처리 (Batch Processing): 많은 데이터를 한 번에 처리하는 배치 방식으로 IO를 최소화하고, 여러 트랜잭션을 한번에 묶어 처리할 수 있다.
  • 병렬 처리: 대량의 데이터를 동시에 처리할 수 있는 병렬 처리 기능을 활성화하면 성능이 향상된다.
  • 캐시 및 메모리 최적화: SGA (System Global Area)와 PGA (Program Global Area)의 크기를 최적화하여 메모리 관리를 개선한다.

3. 응답 시간 중시 (Low Latency / Response Time Critical)

응답 시간 중시 환경에서는 데이터베이스가 빠르게 반응해야 하므로, 최소 지연 시간을 유지하는 것이 중요하며 인덱스 최적화, 쿼리 튜닝, 병렬 처리 외에도 다음과 같은 기술들이 필요하다:

  • 쿼리 튜닝: 불필요한 테이블 스캔을 피하고 적절한 인덱스를 사용하는 것이 중요하다. EXPLAIN PLAN을 통해 쿼리 성능을 분석하고 최적화할 수 있다.
  • Commit 최적화: 트랜잭션 커밋을 최적화하여 불필요한 락을 줄이고, 데이터베이스의 응답 시간을 개선할 수 있다.

4. 커밋 데이터 (Commit Optimization)

커밋(commit)은 트랜잭션이 데이터베이스에 영구적으로 반영되는 작업을 말한다. 커밋이 잦으면 성능에 영향을 미칠 수 있기 때문에, 커밋을 최적화하는 것이 중요하다.

커밋 최적화 방법:

  • 배치 커밋: 트랜잭션을 하나하나 커밋하지 않고, 여러 작업을 배치로 묶어서 한 번에 커밋하면 성능을 크게 향상시킬 수 있다. 
  • 자동 커밋 비활성화: 자동 커밋 기능을 비활성화하고, 명시적인 커밋을 통해 필요한 시점에만 트랜잭션을 커밋한다.
    SET AUTOCOMMIT OFF;
    
  • Commit 빈도 조절: 너무 자주 커밋하지 않고, 작업을 묶어서 커밋함으로써 성능을 개선할 수 있다. 너무 자주 커밋하면 트랜잭션 로그가 과도하게 발생하여 성능이 저하될 수 있다.

 

 

 

배치 커밋 코드:

BEGIN
  FOR i IN 1..1000 LOOP
    INSERT INTO table_name (col1, col2) VALUES (val1, val2);
    IF MOD(i, 100) = 0 THEN
      COMMIT;
    END IF;
  END LOOP;
  COMMIT;
END;

위의 예제는 100개씩 데이터를 처리하고 100개마다 커밋을 실행하는 방식이다. 이렇게 하면 한 번에 많은 데이터를 처리하면서도 커밋으로 인한 성능 저하를 최소화할 수 있다.

반응형