Oracle Text 인덱스를 동기화하고 최적화하는 방법은 무엇입니까?
우리는 a를 사용하고 싶습니다.ctxsys.context
전체 텍스트 검색을 위한 인덱스 유형.하지만 이런 유형의 인덱스가 자동으로 업데이트되지 않는다는 사실에 상당히 놀랐습니다.하루에 약 1만 건의 업데이트/삽입/삭제가 포함된 300만 건의 문서를 보유하고 있습니다.
Oracle Text 인덱스를 동기화하고 최적화하기 위한 권장 사항은 무엇입니까?
"자동으로 업데이트되지 않는다"는 것은 무슨 뜻입니까?
인덱스는 커밋 시 또는 주기적으로 동기화할 수 있습니다.
Create index ... on ... INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('SYNC ( ON COMMIT)')
Create index ... on ... INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS 'SYNC (EVERY "SYSDATE+1/24")')
DBA가 인덱스를 주기적으로 동기화할 것을 권장하는 실시간 검색 정확도가 필요하지 않다면, 매 2분마다 한 번씩 인덱스를 동기화할 수 있습니다.하룻밤 사이에 할 수 있는 여유가 있다면 더 좋을 겁니다.가장 좋은 것은 당신의 부하와 문서의 크기에 달려있습니다.
이러한 링크를 통해 더 많은 정보를 얻을 수 있습니다.
DBA 조언의 경우 서버 장애가 더 나은 것은 아닐까요?
여기에 오라클 12C 사용자를 위한 업데이트로 이를 배치합니다.실시간 모드에서 인덱스를 사용하면 항목을 메모리에 저장하고 주기적으로 메인 테이블로 푸시하므로 조각화가 감소되고 스트리밍 컨텐츠에서 NRT 검색이 가능합니다.설정 방법은 다음과 같습니다.
exec ctx_ddl.drop_preference ( 'your_tablespace' );
exec ctx_ddl.create_preference( 'your_tablespace', 'BASIC_STORAGE' );
exec ctx_ddl.set_attribute ( 'your_tablespace', 'STAGE_ITAB', 'true' );
create index some_text_idx on your_table(text_col) indextype is ctxsys.context PARAMETERS ('storage your_tablespace sync (on commit)')
NRT 모드로 인덱스를 설정합니다.꽤 달콤하네요.
이전 답변에서 설명한 대로 Oracle 10g 이상에서만 사용 가능한 'SYNC EVERY' 옵션이라고 생각합니다.이전 버전의 Oracle을 사용하는 경우 주기적으로 동기화 작업을 실행해야 합니다.예를 들어 다음과 같은 저장 프로시저를 생성할 수 있습니다.
CREATE OR REPLACE
Procedure sync_ctx_indexes
IS
CURSOR sql1 is select distinct(pnd_index_owner||'.'||pnd_index_name) as index_name from ctx_pending;
BEGIN
FOR rec1 IN sql1 LOOP
ctx_ddl.sync_index(rec1.index_name);
END LOOP;
END;
DBMS_JOB를 통해 실행되도록 예약합니다.
DBMS_JOB.SUBMIT(job_id, 'sync_ctx_indexes;', SYSDATE, 'SYSDATE + 1/720');
인덱스 최적화는 다음 명령을 사용할 수 있습니다(DBMS_JOB 또는 cron을 통해 예약할 수도 있습니다).
alter index my_index rebuild online parameters('optimize full maxtime 60');
비슷한 기능을 가진 CTX_* 패키지도 있습니다.
언급URL : https://stackoverflow.com/questions/1916244/how-to-sync-and-optimize-an-oracle-text-index
'programing' 카테고리의 다른 글
변수 ID 이름을 대상으로 하는 CSS (0) | 2023.10.22 |
---|---|
SQL을 이용하여 지난 24시간 동안의 레코드를 선택하는 방법은? (0) | 2023.10.22 |
저장된 프로시저/기능이 테이블을 반환할 수 있습니까? (0) | 2023.10.22 |
C#에서 C/inline 어셈블리 사용 (0) | 2023.10.22 |
PowerShell에서 설정(데이터 구조) (0) | 2023.10.22 |