pureQuery 클라이언트 최적화를 사용한 DB2 특수 레지스터 변경사항 추적

pureQuery 클라이언트 최적화가 실행 중인 애플리케이션에서 SQL문을 캡처할 때 특수 레지스터 설정을 변경하는 SQL문이 실행되면 경고 메시지가 로그 파일에 전송됩니다. 자주 사용되고 SQL문의 동작에 영향을 주는 특수 레지스터 설정에 대한 변경사항은 SQL 캡처 중에 pureQueryXML 파일에 기록됩니다.

DB2® 데이터베이스의 경우, 특수 레지스터 값을 변경하면 애플리케이션 작동 방식에 영향을 미칠 수 있습니다. 예를 들어, 특수 레지스터 CURRENT DECFLOAT ROUNDING MODE는 SQL문이 리턴하는 데이터에 영향을 줍니다. SQL문을 캡처할 때 특수 레지스터의 값이 ROUND_CEILING으로 설정되었다고 가정하십시오. 그러면 pureQueryXML 파일의 SQL문을 동등 항목을 ROUND_FLOOR 값으로 설정하는 바인드 옵션을 사용하여 바인드합니다. 애플리케이션이 SQL문을 정적 모드로 실행할 경우 데이터가 특수 레지스터 값에 종속되어 있으면 리턴되는 데이터가 다를 수 있습니다. 애플리케이션 코드가 변경되지 않은 경우에도 결과는 다를 수 있습니다.

pureQueryXML 클라이언트 최적화에 의해 추적되고 기록되는 특수 레지스터 값

pureQuery 클라이언트 최적화는 애플리케이션이 실행되는 동안 SQL문을 캡처할 때 일부 특수 레지스터 값을 추적하여 기록합니다. 캡처된 SQL을 병합하고 구성할 때 SQL문과 함께 기록된 특수 레지스터 정보는 명령문과 함께 보존됩니다.

특수 레지스터의 pureQuery 범주는 다음과 같습니다.

추적되고 기록됨
추적되고 값이 pureQueryXML 데이터로 기록되는 특수 레지스터입니다. pureQueryXML 파일에 저장된 특수 레지스터 정보는 Configure 유틸리티를 사용하여 pureQueryXML 파일을 구성할 때 사용할 수 있으며 워크벤치에서 pureQueryXML 파일을 편집할 때 표시됩니다. Configure 유틸리티 및 pureQueryXML 파일을 편집할 때 표시되는 정보에 대한 자세한 내용은 관련 링크를 참조하십시오. pureQueryXML 파일에 SQL문과 함께 기록되는 DB2 특수 레지스터 값은 표 1의 내용을 참조하십시오.
안전하지 않고 기록되지 않음
기록되지 않지만 값 변경이 SQL문의 동작에 영향을 미칠 수 있는 특수 레지스터 값입니다. 안전하지 않은 특수 레지스터 값이 변경되면 pureQuery Runtime이 pureQueryXML 파일에 변경을 기록합니다.
안전하고 기록되지 않음
안전하고 pureQueryXML 파일에 기록되지 않는 특수 레지스터입니다. 일반적으로 이러한 특수 레지스터 변경은 SQL문의 동작에 영향을 미치지 않습니다. 예를 들어, 특수 레지스터 CURRENT DEGREE는 애플리케이션 프로세스에 의해 동적으로 준비된 쿼리 실행의 병렬 처리 수준을 지정합니다. 이러한 범주에 속하는 특수 레지스터는 다음과 같습니다. CURRENT PACKAGE PATH, CURRENT PACKAGESET, CURRENT CLIENT_ACCTNG, CURRENT CLIENT_APPLNAME, CURRENT CLIENT_USERID, CURRENT CLIENT_WRKSTNNAME 및 CURRENT DEBUG MODE.
주: 특수 레지스터 PACKAGE PATH 및 PACKAGE SET는 기록되지 않으나 정적 실행에 영향을 미칩니다. PACKAGE SET가 사용되는 경우, 정적 패키지가 동일한 콜렉션에 바인되어야 하며 그렇지 않으면 정적 실행 중에 -805 오류가 발행됩니다.

기록된 특수 레지스터 정보는 pureQueryXML 파일에 특수 레지스터 값 세트로 저장됩니다. 이 정보는 Configure 유틸리티를 사용하여 pureQueryXML 파일을 구성할 때 명령문 세트를 작성하는 데 사용할 수 있습니다. 워크벤치의 pureQueryXML 편집기에서 pureQueryXML 파일을 볼 때 기록된 특수 레지스터 정보가 표시됩니다.

pureQuery Configure 유틸리티 옵션 -groupSQLBySpecialRegisters 및 -optionsFileForBind를 사용하면 SQL문을 정적으로 실행하는 데 도움이 됩니다. 이 옵션들을 따로 사용하거나 함께 사용할 수 있습니다.

-groupSQLBySpecialRegisters 옵션은 명령문을 캡처할 때 기록된 특수 레지스터 정보에 따라 SQL문을 명령문 세트로 그룹화합니다.

-optionsFileForBind 옵션은 StaticBinder 옵션 파일을 작성합니다. StaticBinder 옵션 파일에는 pureQueryXML 파일에 있는 명령문 세트에 대한 바인드 옵션이 포함되어 있습니다. 바인드 옵션은 SQL문과 함께 기록된 특수 레지스터 정보에 기반합니다. pureQueryXML 파일의 특수 레지스터 정보, 명령문 세트, SQL문에 대한 정보와 경고를 포함한 주석도 이 파일에 들어 있습니다.

Configure 유틸리티 옵션을 사용하여 특수 레지스터 정보에 따라 SQL문을 그룹화하고 바인드 옵션을 포함한 StaticBinder 옵션 파일을 생성할 수 있습니다. 파일에 있는 바인드 옵션 및 추가 정보를 통해 SQL문을 정적으로 실행할 때와 애플리케이션에서 발행하고 동적으로 실행할 때의 동작이 비슷하도록 바인드 옵션 세트를 지정하는 데 유용합니다. 바인드 옵션 세트가 있으면 StaticBinder 유틸리티, 옵션 및 pureQueryXML 파일을 사용하여 패키지를 데이터베이스에 바인드하십시오.

주: pureQuery Runtime 버전 2.2.0.3 및 그 이상 버전은 pureQueryXML 파일에 특수 레지스터 정보를 기록합니다. 버전 2.2.0.3보다 이전 버전의 pureQuery Runtime으로 pureQueryXML 파일을 작성한 경우에는 특수 레지스터 정보를 기록하기 위해 일부 SQL문을 다시 캡처해야 할 수도 있습나다.

다음 표에는 pureQuery Runtime이 기록한 특수 레지스터 및 해당 특수 레지스터와 연관된 바인드 옵션을 나열됩니다.

표 1. DB2 특수 레지스터 및 연관된 DB2 바인드 옵션
특수 레지스터 바인드 옵션 참고
CURRENT DECFLOAT ROUNDING MODE1 z/OS®용 DB2 및 System i®용 DB2에 대해 ROUNDING.

Linux, UNIX 및 Windows용 DB2에 대해 바인드 옵션 없음

ROUNDING 바인드 옵션은 일부 DB2 데이터베이스에 사용할 수 없습니다. 이 바인드 옵션을 지원하지 않는 데이터베이스는 사용 시 경고를 보고합니다.
CURRENT PATH Linux, UNIX 및 Windows용 DB2에 대해 FUNCPATH

z/OS용 DB2 및 System i용 DB2에 대해 PATH 또는 FUNCPATH

StaticBinder 옵션 파일을 생성할 때 Configure 유틸리티가 FUNCPATH 바인드 옵션을 지정합니다.
CURRENT PRECISION2 DEC CURRENT PRECISION 특수 레지스터 값은 정밀도 값 및 나누기 연산의 최소 나누기 비율 값을 포함할 수 있습니다. 바인드 옵션 값은 최소 나누기 비율 값을 포함할 수 없습니다.

StaticBinder 옵션 파일을 생성할 때 CURRENT PRECISION 값에서 최소 나누기 비율 값을 찾으면 Configure 유틸리티가 경고 메시지를 생성합니다.

CURRENT SCHEMA3 QUALIFIER  
CURRENT SQLID3 Linux, UNIX용 DB2 및 System i용 DB2에 대해 QUALIFIER

z/OS용 DB2에 대해 바인드 옵션 없음

StaticBinder 옵션 파일을 생성할 때 CURRENT SCHEMA 및 CURRENT SQLID 특수 레지스터의 값이 동일하지 않으면 Configure 유틸리티가 경고 메시지를 생성합니다.

z/OS용 DB2의 경우 일부 상황에서 OWNER 바인드 옵션을 사용할 수 있습니다.

주:
  1. z/OS용 DB2 버전 9.1 이상 및 Linux, Windows 및 UNIX용 DB2 버전 9.5 이상에서는 특수 레지스터가 지원됩니다.
  2. 특수 레지스터는 DECIMAL 정밀도를 지정합니다. 특수 레지스터는 z/OS용 DB2에서만 지원됩니다. Linux, UNIX 및 Windows용 DB2 및 System i용 DB2에서는 특수 레지스터가 지원되지 않습니다.
  3. Linux, UNIX 및 Windows용 DB2 및 System i용 DB2에서는 CURRENT SQLIDCURRENT SCHEMA가 동의어로 사용됩니다.

피드백