Как синхронизировать и оптимизировать текстовый индекс Oracle?

Мы хотим использовать a ctxsys.context индексируйте тип для полнотекстового поиска. Но я был вполне удивлен, что индекс этого типа автоматически не обновляется. У нас есть 3 миллиона документов с приблизительно 10k, обновляет/вставляет/удаляет в день.

Каковы Ваши рекомендации для синхронизации и оптимизации текстового индекса Oracle?

9
задан Roy 5 September 2016 в 19:58
поделиться

2 ответа

Я думаю, что опция «СИНХРОНИЗАЦИЯ КАЖДОГО», как описано в предыдущем ответе, доступна только в Oracle 10g или новее. Если вы используете старую версию 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_ * с аналогичной функцией.

3
ответ дан 4 December 2019 в 10:32
поделиться

Что вы имеете в виду под "не обновляется автоматически"?

Индекс может синхронизироваться при фиксации или периодически.

Create index ... on ... INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('SYNC ( ON COMMIT)')
Create index ... on ... INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS 'SYNC (EVERY "SYSDATE+1/24")')

Мне не нужна точность поиска в реальном времени, наш администратор баз данных рекомендовал периодически синхронизировать индекс, скажем, каждые 2 минуты. Если вы можете позволить себе сделать это в одночасье, то даже лучше. Что лучше, зависит от вашей загрузки и размера документа.

Эти ссылки, вероятно, могут предоставить вам дополнительную информацию:

Для совета администратора, может быть, сбой сервера лучше?

16
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: