SYSTS_UPDATE 프로시저 - 텍스트 검색 인덱스 갱신

SYSTS_UPDATE 프로시저는 인덱스가 연관된 텍스트 컬럼의 현재 컨텐츠를 반영하도록 텍스트 검색 인덱스를 갱신합니다.

갱신이 수행되는 동안 검색이 가능합니다. 갱신이 완료될 때까지는 부분적으로 갱신된 인덱스에 대해 검색이 작동합니다.

이 프로시저는 데이터베이스 서버에서 UPDATE INDEX 텍스트 검색 관리 명령을 발행합니다.

권한 부여

명령문의 권한 부여 ID가 보유한 특권에 SYSTS_MGR 역할 및 다음 권한 중 적어도 하나가 포함되어 있어야 합니다.
  • DATAACCESS 권한
  • 텍스트 인덱스를 정의할 테이블에 대한 CONTROL 특권
  • 텍스트 인덱스가 정의된 기본 테이블에 대한 SELECT와 INDEX 특권
또한, 초기 갱신에 대해 권한 부여 요구사항은 CREATE TRIGGER문에서 설명하는 대로 적용됩니다.

기본 PUBLIC 특권

없음

구문

Read syntax diagramSkip visual syntax diagramSYSTS_UPDATE(index_schema ,index_name,update_options,message_locale ,message)

스키마는 SYSPROC입니다.

프로시저 매개변수

index_schema
텍스트 검색 인덱스의 스키마를 지정하는 VARCHAR(128) 유형의 입력 인수입니다. index_schema는 데이터베이스 스키마 이름의 이름 지정 제한사항을 준수해야 합니다. 인수가 널(NULL)이거나 비어 있는 문자열이면 현재 스키마의 값이 사용됩니다. index_schema는 대소문자를 구분합니다.
색인 이름
인덱스의 이름을 지정하는 VARCHAR(128) 유형의 입력 인수입니다. index_schema와 함께 데이터베이스의 텍스트 검색 인덱스를 고유하게 식별합니다. index_name은 대소문자를 구분합니다.
update_options
갱신 옵션을 지정하는 VARCHAR(32K) 유형의 입력 인수입니다. 옵션이 필요하지 않은 경우 인수는 널(NULL) 또는 비어 있는 문자열일 수 있습니다. 가능한 값은 다음과 같습니다.
UPDATE OPTIONS 값 설명
USING UPDATE MINIMUM 이 옵션은 텍스트 검색 인덱스에 대해 정의된 UPDATE MINIMUM 값 사용을 시행하고 지정된 최소 수의 변경이 발생했으면 갱신을 처리합니다.
데이터 재분배용 이 옵션은 데이터 파티션이 추가 또는 제거된 후 파티션된 데이터베이스의 텍스트 검색 인덱스를 새로 고치고 후속 데이터 재분산 조작을 완료해야 함을 지정합니다. FOR DATA REDISTRIBUTION 옵션으로 텍스트 검색 인덱스가 갱신될 때까지는 검색 결과가 불일치할 수 있습니다.
ALLROWS (ALLROWS) 이 옵션은 초기 갱신을 무조건적으로 시도해야 함을 지정합니다.
UPDATEAUTOCOMMIT 커미트 크기

초기 또는 증분 갱신에 대한 이전 작업이 자동으로 보존되도록 커미트가 실행된 후 행 수 또는 시간을 지정합니다.

행 수를 지정하는 경우:
  • 갱신된 문서 수가 COMMITCOUNT 수에 도달하면 서버가 커미트를 적용합니다. COMMITCOUNT는 스테이징 테이블 엔트리 수가 아니라 기본 키를 사용하여 갱신된 문서 수를 계수합니다.
시간을 지정하는 경우:
  • 지정된 시간에 도달하면 텍스트 인덱스가 커미트됩니다. 최대 시간은 24입니다.

초기 갱신의 경우, 인덱스 갱신은 기본 테이블에서 문서 일괄처리를 처리합니다. commitsize 값에 도달하면 갱신 처리가 커미트 조작을 완료하고 처리한 마지막 키가 스테이징 테이블에 조작 ID '4'로 저장됩니다. 이 키는 지정된 commitcycles 수가 완료된 후에 또는 실패 후에 갱신 처리를 다시 시작하는 데 사용됩니다. commitcycles가 지정되면 갱신 모드가 증분으로 수정되어 텍스트 테이블에 트리거를 작성하기 위한 LOGTYPE BASIC 옵션을 사용하여 변경사항 캡처를 시작합니다. 그렇지만 초기 갱신이 완료될 때까지 이전 주기에서 처리되지 않은 문서로 생성된 로그 엔트리는 스테이징 테이블에서 제거됩니다.

초기 텍스트 인덱스 갱신에 UPDATEAUTOCOMMIT 옵션을 사용하면 실행 시간이 상당히 증가합니다.

증분 갱신의 경우에는 중간 커미트 때마다 처리된 로그 항목이 그에 상응하여 스테이징 테이블에서 제거됩니다.

committype

UPDATEAUTOCOMMIT 인덱스 구성 옵션에 대한 행 또는 시간을 지정합니다. 기본값은 행입니다.

커미트 주기

커미트 순환 수를 지정합니다. 기본값은 무제한 순환에 해당하는 0입니다.

주기가 명시적으로 지정되지 않은 경우 갱신 조작은 갱신 처리를 완료하기 위해 UPDATEAUTOCOMMIT 옵션으로 지정된 일괄처리 크기에 따라 필요한 만큼 많은 주기를 사용합니다.

이 옵션을 확약 유형과 함께 UPDATEAUTOCOMMIT 설정과 함께 사용할 수 있습니다.

메시지 로케일
리턴되는 오류 메시지에 사용할 로케일을 지정하는 VARCHAR(33) 유형의 입력 인수입니다. 이 인수가 NULL 또는 비어 있는 문자열이거나 지정된 로케일에 대한 메시지 파일이 서버에서 사용 불가능한 경우 'en_US'가 사용됩니다.
메시지
성공적으로 완료된 조작에 대한 정보용 메시지 또는 경고를 지정하는 VARCHAR(32K) 유형의 입력 인수입니다.

예:

예 1: 다음 예에서는, index_schema 'db2ts'index_name 'myTextIndex'로 작성된 텍스트 검색 인덱스가 갱신되고 있습니다. update_options을 대신한 NULL 값은 스토어드 프로시저가 호출되면 무조건 갱신이 시작됨을 의미합니다. 오류 메시지는 영어로 리턴하도록 요청됩니다. 성공한 프로시저의 경우 호출자는 성공 메시지를 수신합니다.
  CALL SYSPROC.SYSTS_UPDATE
  ('db2ts', 'myTextIndex', '', 'en_US', ?)
이 쿼리의 출력 예입니다.
  Value of output parameters
  --------------------------
  Parameter Name  : MESSAGE
  Parameter Value : Operation completed successfully.
예 2: 기본 테이블과 연관된 파티션 그룹에 대한 조작이 완료된 후 텍스트 인덱스를 갱신하고 오류 메시지를 영어로 리턴합니다.
  CALL SYSPROC.SYSTS_UPDATE
  ('db2ts', 'myTextIndex2', 'FOR DATA REDISTRIBUTION', 'en_US', ?) 

  Value of output parameters
  --------------------------
  Parameter Name  : MESSAGE
  Parameter Value : Operation completed successfully.

  Return Status = 0

예 3: 다음 예에서는, index_schema 'db2ts'index_name 'myTextIndex3'으로 텍스트 검색 인덱스를 갱신하기 위해 SYSTS_UPDATE가 호출됩니다. 하지만 이 예에서는 인덱스가 존재하지 않아서 오류가 발생합니다.

  CALL SYSPROC.SYSTS_UPDATE('db2ts', 'myTextIndex3', 'USING UPDATE MINIMUM', 
		'en_US', ?)
  SQL20427N An error occurred during a text search administration 
  procedure or command. The error message is "CIE00316 Text search 
  index "db2ts"."myTextIndex3" does not exist. ". SQLSTATE 38H14

사용 참고

  • 텍스트 검색 관리 프로시저는 기존 데이터베이스 연결을 사용합니다. 현재 트랜잭션은 프로시저의 완료 여부에 따라 커미트되거나 롤백될 수 있습니다. 이러한 커미트나 롤백으로 인한 예기치 않은 영향을 피하기 위해 모든 트랜잭션 변경사항을 커미트하려 할 수 있습니다. 모든 트랜잭션 변경사항을 커미트하는 한 가지 방법은 AUTOCOMMIT를 켜는 것입니다.
  • 특정 프로시저나 명령은 충돌 조작의 시간 제어로 인해 오류가 발생할 수 있으므로 텍스트 검색 인덱스에 대해 동시에 실행할 수 없습니다. 충돌하는 프로시저 및 명령 중 일부는 다음과 같습니다.
    • SYSTS_ALTER 프로시저 또는 db2ts ALTER INDEX 명령
    • SYSTS_CLEAR_EVENTS 프로시저 또는 db2ts CLEAR EVENTS FOR INDEX 명령
    • SYSTS_DISABLE 프로시저 또는 db2ts DISABLE DATABASE FOR TEXT 명령
    • SYSTS_UPDATE 프로시저 또는 db2ts UPDATE INDEX 명령
    충돌이 있을 경우 프로시저는 SQLCODE -20426 및 SQLSTATE 38H13을 리턴합니다.
  • 이 프로시저는 모든 인덱스 갱신 처리가 완료될 때까지 리턴하지 않습니다. 지속기간은 인덱싱되는 문서 수 및 이미 인덱싱된 문서 수에 따라 다릅니다. 인덱스의 콜렉션 이름은 SYSIBMTS.TSCOLLECTIONNAMES 뷰 COLLECTIONNAME 컬럼에서 검색할 수 있습니다.
  • 개별 문서 오류가 있을 때에는 문서를 정정해야 합니다. 오류 문서의 기본 키는 인덱스에 대한 이벤트 테이블에서 검색할 수 있습니다. 사용자 테이블에서 해당 행을 변경함으로써 다음 번 SYSTS_UPDATE 호출 시에 이 문서가 다시 처리됩니다.
  • SYSTS_UPDATE 프로시저가 실행될 때 다음 이벤트가 발생합니다.
    • 구문 분석기 오류 정보를 포함하여, 다수의 행이 이벤트 테이블에 삽입됩니다. 증분 갱신의 경우 인덱스 스테이징 테이블에서 정보가 삭제됩니다. 첫 번째 갱신 이전에 SYSTS_UPDATE 프로시저는 사용자 테이블에 트리거를 작성합니다.
    • 다음과 같이 콜렉션이 갱신됩니다.
      • 신규 또는 변경된 문서가 구문 분석되고 인덱싱됩니다.
      • 삭제된 문서가 인덱스에서 버려집니다.
  • 동의어 사전이 텍스트 인덱스와 연관된 경우에 ALLROWS 또는 FOR DATA REDISTRIBUTION로 갱신 옵션을 발행하면 텍스트 인덱스에 대한 콜렉션을 삭제(drop)한 후 재작성해서 연관이 제거됩니다. 동의어 사전을 새 텍스트 인덱스 콜렉션과 연관시켜야 합니다.
  • 이전 버전과의 호환성을 위해 UPDATEAUTOCOMMIT 인덱스 구성 옵션을 유형 및 순환 없이 지정할 수 있습니다. 이는 기본적으로 COMMITTYPE 옵션 및 무제한 주기와 연관됩니다.
  • UPDATEAUTOCOMMIT, COMMITTYPE 또는 COMMITSIZE 값은 갱신 조작에 지정되면 특정 갱신에 대해서만 구성된 기존 값을 겹쳐쓰며 지속되지 않습니다. UPDATE.