|
|
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
Как быстро проапдейтить не индексированное поле в таблице, в которой есть тяжелый контекстный индекс 'sync on (commit)'? При попытке это сделать выполнение очень медленное, я так понимаю перестраивается контекстный индекс, хотя его значение не изменяется. В longops показывает, что апдейт будет длиться несколько суток (что странно, имхо sync on(commit) вроде означает перестройку индекса при коммите), хотя самих строк в таблице относительно не много, и без контекстного индекса выполняется очень быстро. База рабочая, желательно сделать на лету. Но если останавливать приложение, для обеспечения консистентсности, то совсем не надолго - перестройка индекса не вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 12:25 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
Перестройка индекса при коммите миф - при коммите запускается хранимка, которая по-факту и индексирует. Я считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 12:42 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
ShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например. Как изменить sync, по моему он задается только при создании контекстного индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 12:48 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
publexusКак изменить sync, по моему он задается только при создании контекстного индекса? Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:05 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
именно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:12 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
но я бы использовал ALTER INDEX index_name PARAMETERS (paramstring) чтобы поменять ровно 1 параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:13 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
важно что - то, что эта процедура меняет ВСЕ метадата, т.е. например если был задан itab, то она и его поменяет, поэтому с этой процедурой надо быть очень аккуратным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:15 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
ShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например. Не помогло. Есть еще триггер, но внутри условие по updating("COLUMN"). В таблице всего 150 000 строк. При запуске апдейта скорость падает геометрически, судя по longops: 1% проходит за 3 секунды, 2% - 15 сек, 3% - 1мин., и т.д. Когда ставил на выходные, он прошел только четверть, и прогнозировал время полного выполнения - 10+ суток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:31 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
я не думаю, что дело в полнотекстовом индексе. Есть очень простой способ проверить. Посмотри меняется ли кол-во записей в DR$ таблицах, которые относятся к этому индексу. Если кол-во в них не меняется, то дело не в нём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 13:49 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
publexusShtockЯ считаю, надо поставить sync on request, проапдейтить, сделать ручной синк с паралелью 16 например. Не помогло. Есть еще триггер, но внутри условие по updating("COLUMN"). В таблице всего 150 000 строк. При запуске апдейта скорость падает геометрически, судя по longops: 1% проходит за 3 секунды, 2% - 15 сек, 3% - 1мин., и т.д. Когда ставил на выходные, он прошел только четверть, и прогнозировал время полного выполнения - 10+ суток. что этот триггер делает? Основная идея будет, наиболее вероятно, примерно та же. Временно отключить, или модифицировать триггер, чтобы он не мешал обновлению, а затем сделать то, что он должен сделать, за один заход. Или вообще не делать, если без этого можно обойтись. После этого восстановить триггер в исходное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2017, 14:29 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
Nobody1111Основная идея будет, наиболее вероятно, примерно та же. Временно отключить, или модифицировать триггер, чтобы он не мешал обновлению, а затем сделать то, что он должен сделать, за один заход. Или вообще не делать, если без этого можно обойтись. После этого восстановить триггер в исходное состояние. Так и пришлось делать: остановить приложение, удалить триггер, проапдейтить таблицу, восстановить триггер, запустить приложение. На все ушло пару минут. Не понимаю, почему с триггером так медленно выполнялось. В триггере условие update() по конкретному полю типа clob, поэтому он запускался, но по сути ничего не делал. Может быть потому, что в теле триггера присутствовала локальная переменная типа xmltype, но она декларировалась внутри блока if-then и не должна была создаваться если нужный clob не изменялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 12:50 |
|
||
|
Update non-index column in table with context index
|
|||
|---|---|---|---|
|
#18+
А зачем удалять триггер, если можно задизаблить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2017, 14:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39461594&tid=1885848]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 522ms |

| 0 / 0 |
