powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Update non-index column in table with context index
13 сообщений из 13, страница 1 из 1
Update non-index column in table with context index
    #39461425
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как быстро проапдейтить не индексированное поле в таблице, в которой есть тяжелый контекстный индекс 'sync on (commit)'?

При попытке это сделать выполнение очень медленное, я так понимаю перестраивается контекстный индекс, хотя его значение не изменяется. В longops показывает, что апдейт будет длиться несколько суток (что странно, имхо sync on(commit) вроде означает перестройку индекса при коммите), хотя самих строк в таблице относительно не много, и без контекстного индекса выполняется очень быстро.

База рабочая, желательно сделать на лету. Но если останавливать приложение, для обеспечения консистентсности, то совсем не надолго - перестройка индекса не вариант.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461443
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перестройка индекса при коммите миф - при коммите запускается хранимка, которая по-факту и индексирует. Я считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461446
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например.
Как изменить sync, по моему он задается только при создании контекстного индекса?
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461474
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexusКак изменить sync, по моему он задается только при создании контекстного индекса?

Код: plsql
1.
exec CTX_DDL.REPLACE_INDEX_METADATA('INDEX_NAME','REPLACE METADATA SYNC(manual)');
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461482
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно :)
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461483
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но я бы использовал ALTER INDEX index_name PARAMETERS (paramstring) чтобы поменять ровно 1 параметр
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461485
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
важно что - то, что эта процедура меняет ВСЕ метадата, т.е. например если был задан itab, то она и его поменяет, поэтому с этой процедурой надо быть очень аккуратным.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461514
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например.

Не помогло. Есть еще триггер, но внутри условие по updating("COLUMN"). В таблице всего 150 000 строк.

При запуске апдейта скорость падает геометрически, судя по longops: 1% проходит за 3 секунды, 2% - 15 сек, 3% - 1мин., и т.д. Когда ставил на выходные, он прошел только четверть, и прогнозировал время полного выполнения - 10+ суток.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461543
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не думаю, что дело в полнотекстовом индексе. Есть очень простой способ проверить. Посмотри меняется ли кол-во записей в DR$ таблицах, которые относятся к этому индексу. Если кол-во в них не меняется, то дело не в нём.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39461594
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
publexusShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например.

Не помогло. Есть еще триггер, но внутри условие по updating("COLUMN"). В таблице всего 150 000 строк.

При запуске апдейта скорость падает геометрически, судя по longops: 1% проходит за 3 секунды, 2% - 15 сек, 3% - 1мин., и т.д. Когда ставил на выходные, он прошел только четверть, и прогнозировал время полного выполнения - 10+ суток.

что этот триггер делает?

Основная идея будет, наиболее вероятно, примерно та же. Временно отключить, или модифицировать триггер, чтобы он не мешал обновлению, а затем сделать то, что он должен сделать, за один заход. Или вообще не делать, если без этого можно обойтись. После этого восстановить триггер в исходное состояние.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39462212
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111Основная идея будет, наиболее вероятно, примерно та же. Временно отключить, или модифицировать триггер, чтобы он не мешал обновлению, а затем сделать то, что он должен сделать, за один заход. Или вообще не делать, если без этого можно обойтись. После этого восстановить триггер в исходное состояние.

Так и пришлось делать: остановить приложение, удалить триггер, проапдейтить таблицу, восстановить триггер, запустить приложение.
На все ушло пару минут.

Не понимаю, почему с триггером так медленно выполнялось. В триггере условие update() по конкретному полю типа clob, поэтому он запускался, но по сути ничего не делал. Может быть потому, что в теле триггера присутствовала локальная переменная типа xmltype, но она декларировалась внутри блока if-then и не должна была создаваться если нужный clob не изменялся.
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39462345
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем удалять триггер, если можно задизаблить?
...
Рейтинг: 0 / 0
Update non-index column in table with context index
    #39462405
цпу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtockА зачем удалять триггер, если можно задизаблить?
удалять всегда приятней
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Update non-index column in table with context index
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]