PL/SQL 최적화 수준 (Optimize Level)

PL/SQL 최적화 수준(Optimization Level)이란?

PL/SQL 최적화 수준은 PL/SQL 컴파일러가 코드를 얼마나 적극적으로 최적화할지 결정하는 컴파일 파라미터입니다. 높은 최적화 수준은 더 나은 성능을 제공할 수 있지만, 컴파일 시간이 길어지고 디버깅이 어려워질 수 있습니다. 반대로 낮은 최적화 수준은 컴파일 시간이 짧고 디버깅이 용이하지만, 성능이 떨어질 수 있습니다. 따라서 상황에 맞게 적절한 최적화 수준을 선택하는 것이 중요합니다.

PL/SQL 최적화 수준 종류

PL/SQL은 다음과 같은 최적화 수준을 제공합니다.

  • 0: 최소한의 최적화만 수행합니다. 디버깅에 가장 적합합니다.
  • 1: 기본 최적화 수준입니다. 대부분의 애플리케이션에 적합합니다.
  • 2: 중간 수준의 최적화를 수행합니다.
  • 3: 가장 높은 수준의 최적화를 수행합니다. 성능이 중요한 애플리케이션에 적합합니다.

PL/SQL 최적화 수준 설정 방법

PL/SQL 최적화 수준은 세션 또는 시스템 수준에서 설정할 수 있습니다.

세션 수준 설정

세션 수준에서 최적화 수준을 설정하려면 ALTER SESSION 명령어를 사용합니다.

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 3;

이 명령어는 현재 세션에 대해서만 최적화 수준을 3으로 변경합니다.

시스템 수준 설정

시스템 수준에서 최적화 수준을 설정하려면 ALTER SYSTEM 명령어를 사용합니다. 변경 사항을 적용하려면 데이터베이스를 재시작해야 합니다.

ALTER SYSTEM SET PLSQL_OPTIMIZE_LEVEL = 3 SCOPE=SPFILE;

이 명령어는 데이터베이스를 재시작한 후 모든 세션에 대해 최적화 수준을 3으로 변경합니다.

PL/SQL 최적화 수준별 성능 비교

최적화 수준에 따른 성능 차이를 이해하기 위해 간단한 예제를 사용하겠습니다. 다음 PL/SQL 코드는 팩토리얼을 계산합니다.

CREATE OR REPLACE FUNCTION factorial (n NUMBER) RETURN NUMBER IS
  result NUMBER := 1;
BEGIN
  FOR i IN 1..n LOOP
   result := result * i;
  END LOOP;
  RETURN result;
END;
/

다음 코드를 사용하여 여러 최적화 수준에서 팩토리얼 함수의 실행 시간을 측정할 수 있습니다.

SET TIMING ON;

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 0;
SELECT factorial(20) FROM dual;

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 1;
SELECT factorial(20) FROM dual;

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 2;
SELECT factorial(20) FROM dual;

ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL = 3;
SELECT factorial(20) FROM dual;

SET TIMING OFF;

실행 결과 예시는 다음과 같습니다.

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.01

FACTORIAL(20)
--------------
1

Elapsed: 00:00:00.01

FACTORIAL(20)
--------------
1

Elapsed: 00:00:00.00

FACTORIAL(20)
--------------
1

Elapsed: 00:00:00.00

FACTORIAL(20)
--------------
1
  

위 실행 결과에서, 최적화 수준이 높아질수록 실행 시간이 약간 감소하는 것을 확인할 수 있습니다. 하지만 팩토리얼 계산은 상대적으로 단순한 작업이어서 최적화 수준에 따른 성능 차이가 크지 않을 수 있습니다.

실무 팁 및 주의사항

  • 디버깅 시 최적화 수준 낮추기: 디버깅 과정에서는 최적화 수준을 0으로 설정하여 코드를 추적하고 오류를 쉽게 진단할 수 있도록 합니다.
  • 성능 테스트 후 최적화 수준 결정: 개발 환경에서 충분히 테스트한 후, 프로덕션 환경에 배포하기 전에 적절한 최적화 수준을 결정합니다.
  • 컴파일 시간 고려: 높은 최적화 수준은 컴파일 시간을 증가시킬 수 있으므로, 대규모 PL/SQL 코드에서는 컴파일 시간을 고려하여 최적화 수준을 선택합니다.
  • ADDM 및 SQL Tuning Advisor 활용: 오라클의 자동 진단 및 튜닝 도구를 활용하여 최적의 PL/SQL 튜닝 방안을 찾아볼 수 있습니다.

추가 정보

PL/SQL 최적화 수준에 대한 자세한 내용은 다음 오라클 문서를 참조하십시오.

이 가이드에서는 PL/SQL 최적화 수준의 기본 개념과 설정 방법, 성능 비교, 실무 팁 등을 자세하게 알아보았습니다. 이러한 지식을 바탕으로 애플리케이션의 성능을 향상시키는 데 도움이 되기를 바랍니다.