쿼리 컴파일러 변수

최적화 의사결정 및 SQL 쿼리 조작 강제 실행 같은 데이터베이스에 대한 최적화 의사결정을 제어하는 쿼리 컴파일러 변수를 설정할 수 있습니다.

일부 쿼리 컴파일러 변수는 최적화 프로파일을 사용하여 설정될 수 있습니다. 자세한 내용은 최적화 프로파일의 SQL 컴파일러 레지스트리 변수를 참조하세요.

DB2_ALLOW_WRITE_OF_MASKED_DATA
  • 운영 체제: 모두
  • Default=NO
  • 기본적으로, 마스크 데이터를 테이블이나 테이블 변수에 기록할 수 없습니다. 이 변수를 YES로 설정하여 마스크 데이터의 쓰기를 허용합니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_ANTIJOIN
  • 운영 체제: 모두
  • ESE 환경의 기본값=NO, 비ESE 환경의 기본값=EXTEND, 값: YES, NO 또는 EXTEND
  • DB2_WORKLOAD가 ANALYTICS 또는 SAP로 설정되면, DB2_ANTIJOIN이 EXTEND로 설정됩니다.
  • 이 변수가 YES로 설정되면 옵티마이저는 NOT EXISTS 서브쿼리를 Db2®에서 보다 효율적으로 처리할 수 있는 안티 조인으로 변환할 기회를 검색합니다.

    이 변수가 NO로 설정되면 옵티마이저는 NOT EXISTS 서브쿼리를 부정형 조인으로 변환할 기회를 제한합니다.

    이 변수가 EXTEND로 설정되면 옵티마이저는 NOT IN 및 NOT EXISTS 서브쿼리를 모두 부정형 조인으로 변환할 기회를 검색합니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_DEFERRED_PREPARE_SEMANTICS
  • 운영 체제: 모두
  • 기본값=NO, 값: YES 또는 NO
  • YES로 설정되면, 이 레지스트리 변수는 PREPARE문에 사용된 유형이 지정되지 않은 모든 매개변수 표시문자가 후속 OPEN 또는 EXECUTE문과 연관된 입력 디스크립터를 기반으로 데이터 유형 및 길이 속성을 파생하도록 지연된 준비 시맨틱을 사용합니다. 이를 통해 유형이 지정되지 않은 매개변수 표시문자를 이전에 지원된 위치보다 더 많은 위치에 사용할 수 있습니다.

    참고: DB2_DEFERRED_PREPARE_SEMANTICSYES 로 설정하면 의도하지 않은 영향이나 결과가 발생할 수 있습니다. 입력 디스크립터의 데이터 유형이 "유형이 지정되지 않은 표현식의 데이터 유형 판별" 에 대한 규칙을 사용하여 파생된 데이터 유형과 다른 경우 다음이 발생할 수 있습니다.
    • 추가 캐스트 조작으로 인해 쿼리 성능이 저하됩니다.
    • 데이터 유형을 변환할 수 없기 때문에 쿼리가 실패합니다.
    • 쿼리는 다른 결과를 리턴할 수 있습니다.
    예를 들어, 값이 '1', '100', '200'인 VARCHAR(10)으로 정의된 char_col 컬럼을 포함한 테이블 t1을 가정하십시오. 사용자가 다음 쿼리를 실행합니다.
    select * from t1 where char_col = ?
    입력 매개변수의 데이터 유형이 INTEGER이고 지연된 준비를 사용 중인 경우, char_col 컬럼은 숫자로 캐스트됩니다. 그러나 테이블의 행 중 하나에 숫자 값으로 변환할 수 없는 숫자가 아닌 데이터('xxx')가 포함되어 있기 때문에 쿼리가 실패합니다.
    YES_DBCS_GRAPHIC_TO_CHAR로 설정되면 이 레지스트리 변수는 매개변수 표시문자를 VARGRAPHIC 대신 VARCHAR로 입력하도록 지정합니다. 다음 사항에 모두 해당되면 DB2_DEFERRED_PREPARE_SEMANTICS 레지스트리 변수에는 내재적으로 이 설정이 있습니다.
    • DB2_DEFERRED_PREPARE_SEMANTICS가 설정되지 않았습니다(즉, NULL로 설정됨).
    • The DB2_COMPATIBILITY_VECTOR 레지스트리 변수는 ORA, MYS또는 MSS로 설정됩니다.
    • 2바이트 문자 세트(DBCS) 환경에 있습니다.

    db2start 명령을 실행하기 전에 DB2_DEFERRED_PREPARE_SEMANTICS 레지스트리 변수를 설정해야 합니다.

DB2_EXPLAIN_OPT
  • 운영 체제: 모두
  • 기본적으로, DB2_EXPLAIN_OPT가 설정되지 않습니다.
  • 쉼표로 구분된 목록으로 두 옵션을 지정할 수 있습니다. OP_CMPEXP [ON|OFF], ARG_MAXCARD [ON|OFF].
  • 기본적으로, OP_CMPEXP는 OFF입니다.
  • 기본적으로, ARG_MAXCARD는 ON입니다.
  • OP_CMPEXP가 사용되면 CMPEXP 연산자가 explain 플랜에서 볼 수 있습니다. ' db2set DB2_EXPLAIN_OPT="OP_CMPEXP ON"'를 실행하여 ' OP_CMPEXP '을 활성화합니다
  • ARG_MAXCARD가 사용되면 explain 플랜에서 MAX CARD 인수를 볼 수 있습니다. ' db2set DB2_EXPLAIN_OPT="ARG_MAXCARD OFF"'를 실행하여 ' ARG_MAXCARD '을 비활성화할 수 있습니다
  • db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.
DB2_INLIST_TO_NLJN
  • 운영 체제: 모두
  • 기본값=NO(DB2_WORKLOAD=SAP인 경우 YES), 값: YES 또는 NO
  • 일부 상황에서 SQL 및 XQuery 컴파일러는 조인에 대한 IN 목록 술어를 재작성할 수 있습니다. 예를 들어,
    
        SELECT *
         FROM EMPLOYEE
         WHERE DEPTNO IN ('D11', 'D21', 'E21')
    	  
    쿼리를 다음과 같이 쓸 수 있습니다.
        SELECT *
         FROM EMPLOYEE, (VALUES 'D11', 'D21', 'E21) AS V(DNO)
         WHERE DEPTNO = V.DNO
    	  

    DEPTNO에 대한 인덱스가 있는 경우 이 에디션은 향상된 성능을 제공합니다. 값 목록을 먼저 액세스한 다음 Join 술어를 적용할 인덱스를 사용하여 중첩된 루프 조인과 함께 EMPLOYEE에 조인합니다.

    옵티마이저에 쿼리의 재작성 버전에 가장 적합한 조인 메소드를 판별하는 데 필요한 정확한 정보가 없는 경우가 있습니다. 이러한 상황은 옵티마이저가 선택 빈도를 판별하는 데 카탈로그 통계를 사용하지 못하게 하는 매개변수 표시문자 또는 호스트 변수가 IN 목록에 포함된 경우에 발생합니다. 이 레지스트리 변수는 옵티마이저가 IN 목록을 조인의 내부 테이블로 제공하는 테이블을 사용하여 값 목록을 조인하는 중첩 루프 조인을 기본으로 설정하는 원인이 됩니다.

    참고: Db2 쿼리 컴파일러 변수 DB2_MINIMIZE_LISTPREFETCHDB2_INLIST_TO_NLJN중 하나 또는 둘 다가 YES로 설정되면 REOPT (ONCE) 가 지정된 경우에도 활성 상태로 유지됩니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_LIKE_VARCHAR
  • 운영 체제: 모두
  • 기본값=Y,Y,
  • 하위 요소 통계의 사용을 제어합니다. 데이터에 공백으로 구분된 일련의 하위 필드 또는 하위 요소 형식의 구조가 있는 경우 컬럼의 데이터 컨텐츠에 대한 통계가 있습니다. 하위 요소 통계의 콜렉션은 선택적이며 RUNSTATS 명령 또는 API의 옵션으로 제어됩니다.
    중요: 이 변수는 더 이상 사용되지 않으며 IBM® 서비스의 권고에 따라서만 설정을 변경해야 하므로 향후 릴리스에서 제거될 수 있습니다.
    이 레지스트리 변수는 옵티마이저가 다음 형식의 술어를 처리하는 방법에 영향을 미칩니다.
       COLUMN LIKE '%xxxxxx%'
    여기서 xxxxxx는 문자로 구성된 임의의 문자열입니다.

    이 레지스트리 변수가 사용되는 방법을 표시하는 구문은 다음과 같습니다.

       db2set DB2_LIKE_VARCHAR=[Y|N|S|num1] [,Y|N|S|num2]
    여기서,
    • 쉼표 앞에 있는 용어 또는 술어 오른쪽에 있는 용어는 두 번째 용어가 N으로 지정되거나 컬럼에 양의 하위 요소 통계가 없는 경우에만 다음을 의미합니다.
      • S – 옵티마이저는 함께 병합되어 컬럼을 형성하는 일련의 요소에서 % 문자로 묶인 문자열의 길이를 기반으로 각 요소의 길이를 추정합니다.
      • Y – 기본값입니다. 알고리즘 매개변수에 기본 1.9를 사용하십시오. 알고리즘 매개변수와 함께 변수 길이 하위 요소 알고리즘을 사용하십시오.
      • N – 고정 길이 하위 요소 알고리즘을 사용하십시오.
      • num1 – 변수 길이 하위 요소 알고리즘에 num1 값을 알고리즘 매개변수로 사용하십시오.
    • 쉼표 뒤에 오는 용어는 양의 하위 요소 통계가 있는 컬럼에 대해서만 다음을 의미합니다.
      • N – 하위 요소 통계를 사용하지 않습니다. 첫 번째 용어가 적용됩니다.
      • Y – 기본값입니다. 양의 하위 요소 통계가 있는 컬럼의 경우에 알고리즘 매개변수에 1.9 기본값과 함께 하위 요소 통계를 사용하는 변수 길이 하위 요소 알고리즘을 사용하십시오.
      • num2 – 양의 하위 요소 통계가 있는 컬럼의 경우에 알고리즘 매개변수로 num2 값과 함께 하위 요소 통계를 사용하는 변수 길이 하위 요소 알고리즘을 사용하십시오.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_MINIMIZE_LISTPREFETCH
  • 운영 체제: 모두
  • 기본값=NO(DB2_WORKLOAD=SAP인 경우 YES), 값: YES 또는 NO
  • 목록 프리페치는 인덱스에서 규정 RID 검색, 페이지 번호순 정렬 및 데이터 페이지 프리페치를 포함하는 특수 테이블 액세스 메소드입니다. 옵티마이저에 목록 프리페치가 적합한 액세스 메소드인지를 판별하는 데 필요한 정확한 정보가 없는 경우가 있습니다. 이러한 상황은 옵티마이저가 선택 빈도를 판별하는 데 카탈로그 통계를 사용하지 못하게 하는 매개변수 표시문자 또는 호스트 변수가 술어 선택 빈도에 포함된 경우에 발생합니다.

    이 레지스트리 변수는 옵티마이저가 이러한 상황에서 목록 프리페치를 고려하는 것을 방지합니다.

    참고: Db2 쿼리 컴파일러 변수 DB2_MINIMIZE_LISTPREFETCHDB2_INLIST_TO_NLJN중 하나 또는 둘 다가 YES로 설정되면 REOPT (ONCE) 가 지정된 경우에도 활성 상태로 유지됩니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_NEW_CORR_SQ_FF
  • 운영 체제: 모두
  • 기본값=OFF, 값: ON 또는 OFF
  • ON으로 설정된 경우 특정 서브쿼리 술어에 대해 쿼리 옵티마이저에서 계산한 선택 빈도 값에 영향을 줍니다. 이 변수는 서브쿼리의 SELECT 목록에서 MIN 또는 MAX 집계 함수를 사용하는 등식 서브쿼리 술어의 선택 빈도 값의 정확성을 높이기 위해 사용할 수 있습니다. 예를 들면, 다음과 같습니다.
    SELECT * FROM T WHERE 
    T.COL = (SELECT MIN(T.COL) 
    FROM T WHERE …)

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_OPT_MAX_TEMP_SIZE
  • 운영 체제: 모두
  • 기본값=NULL, 값: 모든 임시 테이블스페이스에서 쿼리에 사용할 수 있는 스페이스 크기(MB)
  • 임시 테이블스페이스에서 쿼리가 사용할 수 있는 스페이스 크기를 제한합니다. DB2_OPT_MAX_TEMP_SIZE 설정으로 옵티마이저는 그렇지 않은 경우에 선택되는 플랜보다 비용은 많이 들지만 임시 테이블스페이스의 스페이스를 적게 사용하는 플랜을 선택하게 됩니다. DB2_OPT_MAX_TEMP_SIZE를 설정하는 경우, 설정으로 인해 선택되는 플랜의 유효성에 대해 임시 테이블스페이스의 사용을 제한할 필요성의 균형을 맞추십시오.

    DB2_WORKLOAD=SAP가 설정된 경우, DB2_OPT_MAX_TEMP_SIZE는 자동으로 10 240(10GB)으로 설정됩니다.

    DB2_OPT_MAX_TEMP_SIZE의 값 세트를 초과하여 임시 테이블스페이스를 사용하는 쿼리를 실행하는 경우, 쿼리는 실패하지 않지만 모든 자원이 사용 가능하지는 않으므로 성능이 준최적 상태일 수 있다는 경고가 수신됩니다.

    DB2_OPT_MAX_TEMP_SIZE로 설정된 한계의 영향을 받는 옵티마이저에서 고려하는 조작은 다음과 같습니다.
    • ORDER BY, DISTINCT, GROUP BY, 병합 스캔 조인 및 중첩된 루프와 같은 조작에 대한 명시적 정렬
    • 명시적 임시 테이블
    • 해시 조인 및 중복 병합 조인에 대한 내재된 임시 테이블

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_OPTIMIZER_VERSION
  • 운영 체제: 모두
  • 기본값=current Db2 버전
  • 이 레지스트리 변수는 쿼리 옵티마이저 버전 레벨을 지정합니다. 이전 버전 수준으로 설정하면 해당 수준과 현재 Db2 버전 수준 사이에 도입된 쿼리 최적화가 비활성화됩니다.
  • 이 레지스트리 변수는 SQL 구문이나 시맨틱을 제어하지 않습니다.
  • 버전 레벨은 vv.rr.mm.ff의 형식으로 지정되어야 하며, 여기서 vv=버전, rr=릴리스, mm=수정 레벨 및 ff=수정팩 레벨입니다. 버전 레벨의 모든 파트를 지정해야 합니다.
  • 이 레지스트리 변수는 기존 레지스트리 변수에서 현재 제어되는 옵티마이저 동작을 제어합니다. 이 레지스트리 변수가 DB2_OPTIMIZER_VERSION과 동시에 지정된 경우, DB2_OPTIMIZER_VERSION에서 판별된 설정 다음에 적용됩니다.
  • db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작하지 않아도 됩니다.
DB2_REDUCED_OPTIMIZATION
  • 운영 체제: 모두
  • 기본값=NO, 값: NO, YES, 임의의 정수, DISABLE, JUMPSCAN, NO_SORT_NLJOIN 또는 NO_SORT_MGJOIN
  • 이 레지스트리 변수를 사용하여 지정된 최적화 레벨에서 최적화 기능의 엄격한 사용 또는 감소된 최적화 기능을 요청할 수 있습니다. 사용되는 최적화 기술의 수를 줄일 경우, 최적화하는 동안 시간 및 자원 사용도 줄어듭니다.
    이 변수를 설정하면, 다음 구문 규칙이 적용됩니다.
    • 각 옵션을 쉼표(,)로 구분하고 쉼표 앞뒤에 공백이 없는지 확인하십시오.
    • 옵션과 해당 옵션의 값을 1줄 간격으로 구분하십시오.
    • 설정에 공백이 있는 경우, 설정을 큰따옴표(“”)로 묶으십시오.
    다음 예에서는 올바른 구문을 보여줍니다.
    db2set DB2_REDUCED_OPTIMIZATION="NO_SORT_NLJOIN,JUMPSCAN ON"
    참고: 최적화 시간 및 자원 사용을 줄일 수 있지만 최적보다 낮은 데이터 액세스 플랜을 생성하는 위험은 증가합니다. IBM 또는 IBM 파트너가 권고한 경우에만 이 레지스트리 변수를 사용하십시오.
    • NO로 설정된 경우

      옵티마이저는 최적화 기술을 변경하지 않습니다.

    • YES로 설정된 경우

      최적화 레벨이 5(기본값) 이하인 경우, 옵티마이저는 상당한 준비 시간 및 자원을 사용하지만 일반적으로 더 나은 액세스 플랜을 생성하지 않는 일부 최적화 기술을 사용하지 않습니다.

      최적화 레벨이 정확히 5인 경우, 옵티마이저는 최적화 시간 및 자원 사용은 줄이지만 덜 최적화된 액세스 플랜을 생성할 위험을 증가시키기도 하는 일부 추가 기술을 줄이거나 사용하지 않습니다. 최적화 레벨이 5보다 낮은 경우, 이러한 기술 중 일부는 어떠한 경우에도 효력이 없을 수 있습니다. 그러나 그럴 경우, 여전히 적용됩니다.

    • 임의의 정수로 설정된 경우

      이 효과는 YES와 동일하며 레벨 5에서 최적화된 동적으로 준비된 쿼리에 대해 다음과 같은 추가 동작을 수행합니다. 쿼리 블록의 총 조인 수가 설정을 초과하는 경우, 최적화 프로그램은 레벨 5 최적화 레벨에 대해 이전에 설명한 대로 추가 최적화 기술을 사용 불가능하게 하는 대신 그리디 조인 열거로 전환합니다. 그 결과 쿼리는 최적화 레벨 2와 유사한 레벨에서 최적화됩니다.

    • DISABLE로 설정된 경우

      DB2_REDUCED_OPTIMIZATION 변수로 제한되지 않을 때 최적화 프로그램의 동작은 최적화 레벨 5로 동적 쿼리에 대한 최적화를 동적으로 줄일 수 있습니다. 이 설정은 이 동작을 사용 불가능하게 하며 최적화 프로그램은 전체 레벨 5 최적화를 수행해야 합니다.

    • JUMPSCAN으로 설정한 경우
      이 옵션을 사용하여 DB2 옵티마이저가 점프 스캔 조작을 사용하는지의 여부를 제어할 수 있습니다. 사용자는 다음 값을 지정할 수 있습니다.
      • OFF = DB2 옵티마이저가 점프 스캔을 사용하여 플랜을 작성하지 않습니다.
      • ON = DB2 옵티마이저가 비용 기반 분석을 사용하여 점프 스캔을 사용하는 플랜을 생성할지의 여부를 판별합니다(기본값).
    • NO_SORT_NLJOIN으로 설정된 경우

      옵티마이저는 중첩된 루프 조인(NLJN)에 대한 정렬을 강제 실행하는 쿼리 플랜을 생성하지 않습니다. 이러한 정렬 유형은 성능 향상에 유용할 수 있습니다. 따라서 NO_SORT_NLJOIN 옵션을 사용할 때는 성능에 심각하게 영향을 미칠 수 있으므로 주의하십시오.

    • NO_SORT_MGJOIN으로 설정된 경우

      옵티마이저는 병합 스캔 조인(MSJN)에 대한 정렬을 강제 실행하는 쿼리 플랜을 생성하지 않습니다. 이러한 정렬 유형은 성능 향상에 유용할 수 있습니다. 따라서 NO_SORT_MGJOIN 옵션을 사용할 때는 성능에 심각하게 영향을 미칠 수 있으므로 주의하십시오.

      최적화 레벨 5에서의 동적 최적화 감소는 DB2_REDUCED_OPTIMIZATIONYES로 설정되었을 때 정확히 5인 최적화 레벨에 대해 설명된 동작 및 정수 설정에 대해 설명된 동작에 우선합니다.

    • ZZJN으로 설정된 경우:
      이 옵션을 사용하면 DB2 옵티마이저가 하나의 사실 테이블이 있는 스타 스키마 기반 쿼리에 지그재그형 조인 메소드를 사용하는 방법을 제어할 수 있습니다. 사용자는 다음 값을 지정할 수 있습니다.
      • OFF = DB2 옵티마이저가 지그재그형 조인 메소드를 사용하지 않습니다.
      • ON = DB2 옵티마이저가 비용 기반 분석을 사용하여 지그재그형 조인 메소드 또는 다른 조인 메소드(기본값)를 사용할 것인지를 판별합니다.
      • FORCE = 지그재그형 조인 메소드를 실행할 수 있는 경우 DB2 옵티마이저는 지그재그형 조인 메소드를 사용합니다.
    • ZZJN_MULTI_FACT로 설정된 경우:
      이 옵션을 사용하면 DB2 옵티마이저가 두 개 이상의 사실 테이블이 있는 스타 스키마 기반 쿼리에 지그재그형 조인 메소드를 사용하는 방법을 제어할 수 있습니다. 사용자는 다음 값을 지정할 수 있습니다.
      • OFF = DB2 옵티마이저가 지그재그형 조인 메소드를 사용하지 않습니다.
      • ON = DB2 옵티마이저가 비용 기반 분석을 사용하여 지그재그형 조인 메소드 또는 다른 조인 메소드(기본값)를 사용할 것인지를 판별합니다.
      • FORCE = 지그재그형 조인 메소드를 실행할 수 있는 경우 DB2 옵티마이저는 지그재그형 조인 메소드를 사용합니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_REVERSE_NULL_ORDER
NULL 순서 지정을 사용으로 설정하면 NULLS가 정렬 시 가장 작은 값으로 간주됩니다. DB2_REVERSE_NULL_ORDER 레지스트리 변수를 DB2_REVERSE_NULL_ORDER=TRUE로 설정하여 이 새 옵션을 사용할 수 있습니다. 기본적으로 DB2_REVERSE_NULL_ORDER 레지스트리 변수는 FALSE로 설정됩니다. 다음 예제는 DB2_REVERSE_NULL_ORDER의 사용을 보여줍니다.
CREATE table t1 ( c1 integer, c2 char(1));
INSERT into t1 values
( 1, 'A'),( 2, NULL),( 3, 'C'),( 4, NULL),( 5, 'E');
DB2_REVERSE_NULL_ORDER가 사용 안함으로 설정된 상태에서 select * from t1 order by c2를 실행하면 결과는 다음과 같습니다.
표 1.
c1 c2
1 A
3 C
5 E
2 -
4 -
DB2_REVERSE_NULL_ORDER가 사용으로 설정된 상태(DB2_REVERSE_NULL_ORDER가 TRUE로 설정됨)에서는 다음과 같은 테이블이 표시됩니다.
테이블 2.
c1 c2
2 -
4 -
1 A
3 C
5 E
DB2_SELECTIVITY
  • 운영 체제: 모두
  • 기본값=ALL, 값: YES, NO, ALL 또는 MODEL_PRED_SEL
  • 이 레지스트리 변수는 SELECTIVITY절을 SQL문의 검색 조건에 사용할 수 있는 위치를 제어합니다. 또한 술어 선택도 추정을 위한 카디널리티 모델 사용을 제어하는 데에도 사용됩니다.
    이 변수를 설정하면, 다음 구문 규칙이 적용됩니다.
    • 각 옵션을 쉼표(,)로 구분하고 쉼표 앞뒤에 공백이 없는지 확인하십시오.
    • 옵션과 해당 옵션의 값을 1줄 간격으로 구분하십시오.
    • 설정에 공백이 포함된 경우 설정을 큰따옴표("")로 묶습니다

    이 레지스트리 변수를 NO로 설정하면 SELECTIVITY절을 사용자 정의 술어에만 지정할 수 있습니다.

    이 레지스트리 변수를 YES로 설정하면 SELECTIVITY절을 다음 술어에 지정할 수 있습니다.
    • 사용자 정의 술어
    • 하나 이상의 표현식이 호스트 변수 또는 매개변수 표시문자를 포함하는 BASIC 술어

    이 레지스트리 변수를 ALL로 설정하면 SELECTIVITY절을 모든 술어에 지정할 수 있습니다.

    이 레지스트리 변수가 MODEL_PRED_SEL로 설정된 경우 다음 옵션 중 하나를 사용할 수 있습니다:
    • Model_pred_sel 켜기: 옵티마이저가 조건 선택성 추정에 카디널리티 모델을 사용하는 경우 설정합니다(기본값).
    • MODEL_PRED_SEL OFF: 옵티마이저가 사용 가능한 카디널리티 모델을 사용하지 않습니다.

    db2set 명령을 -immediate 매개변수와 함께 실행하는 경우, 이 변수에 대한 변경사항은 향후 컴파일되는 모든 SQL문에 즉시 적용됩니다. 인스턴스를 재시작할 필요가 없습니다.

DB2_SQLROUTINE_PREPOPTS
  • 운영 체제: 모두
  • 기본값=빈 문자열, 값:
    • APREUSE {YES | NO}
    • BLOCKING {UNAMBIG | ALL | NO}
    • CONCURRENTACCESSRESOLUTION { USE CURRENTLY COMMITTED | WAIT FOR OUTCOME }
    • DATETIME {DEF | USA | EUR | ISO | JIS | LOC}
    • DEGREE {1 | 병렬 처리 수준 | ANY}
    • DYNAMICRULES {BIND | INVOKEBIND | DEFINEBIND | RUN | INVOKERUN | DEFINERUN}
    • EXPLAIN {NO | YES | ALL}
    • EXPLSNAP {NO | YES | ALL}
    • FEDERATED {NO | YES}
    • INSERT {DEF | BUF}
    • ISOLATION {CS | RR | UR | RS | NC}
    • OPTPROFILE {profile_name | schema_name.profile_name}
    • QUERYOPT 최적화 레벨
    • REOPT {NONE | ONCE | ALWAYS}
    • STATICREADONLY {YES|NO|INSENSITIVE}
    • VALIDATE {RUN | BIND}
  • DB2_SQLROUTINE_PREPOPTS 레지스트리 변수를 사용하여 SQL 및 XQuery 프로시저와 함수에 대한 프리컴파일 및 바인드 옵션을 사용자 정의할 수 있습니다. 이 변수를 설정할 때 다음과 같이 각 옵션을 공백으로 구분하십시오.
    db2set DB2_SQLROUTINE_PREPOPTS="BLOCKING ALL VALIDATE RUN"
    각 옵션 및 해당 설정의 전체 설명은 "BIND 명령"을 참조하십시오.

인스턴스를 재시작하지 않고 개별 프로시저 선택에 대해 DB2_SQLROUTINE_PREPOPTS와 동일한 결과를 얻으려면 SET_ROUTINE_OPTS 프로시저를 사용하십시오.