|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
Здравствуйте! Имеется относительно большая таблица для которой необходимо изменить значение в определённой колонке: Код: plaintext
Вопрос - можно ли выполнить такой же Update блокируя только единичную строку в каждый момент - через курсор или как-то еще - я не специалист, не уверен? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:22 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
Да, можно. Код: plsql 1. 2. 3. 4. 5.
В цикле - то же самое. Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:44 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
Ну и если вы меняете значимые для других сессий поля, нужно не забывать про многопользовательский режим - запланировать update на нужное время, выставить блокировки и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:46 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
IgorMpна время выполнения запроса блокируются *все* строки таблицы. Обычно они не блокируются. Как Вы этого добились? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:46 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
IgorMp Здравствуйте! Имеется относительно большая таблица для которой необходимо изменить значение в определённой колонке: Код: plaintext
Вопрос - можно ли выполнить такой же Update блокируя только единичную строку в каждый момент - через курсор или как-то еще - я не специалист, не уверен? Спасибо относительно большая таблица, ето сколько? ps менять в цикле напр по 100тысч строк ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 13:49 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov IgorMpна время выполнения запроса блокируются *все* строки таблицы. Обычно они не блокируются. Как Вы этого добились? Я сам сделал такой вывод т.к. по логам сервер не ответил как раз в то время, когда выполнялся данный запрос. И я всегда считал, что при вызове типа Код: plaintext
а если WHERE не указано - то на все строки таблицы. Разве это не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:00 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
IgorMpРазве это не так? Это не MS SQL сервер, читатели не блокируются писателями. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:05 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
Читатели не блокируются, возможно у вас просто все ресурсы сервера на этот update ушли ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:08 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
env Читатели не блокируются, возможно у вас просто все ресурсы сервера на этот update ушли Я ни слова и не говорил о читателях. И меня все писатели. Сервер не ответил на модифицирующий запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:13 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
IgorMp, cursor + fetch bulk collect into limit + forall упд. А так и задумано что другие сессии будут менять те же строки в то же время? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:25 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
IgorMp Я ни слова и не говорил о читателях. И меня все писатели Так тогда можно и не обновлять, всё равно никто не прочитает. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:30 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
dmdmdm Да, можно. Код: plsql 1. 2. 3. 4. 5.
В цикле - то же самое. Код: plsql 1. 2. 3. 4.
dmdmdm, Спасибо, вариант с курсором действительно не блокирует остальные строки - как раз то что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:46 |
|
Update всех строк большой таблицы без блокировки всей таблицы
|
|||
---|---|---|---|
#18+
env А так и задумано что другие сессии будут менять те же строки в то же время? Мир не идеален :) Кто-то просто пишет скрипт, запускающийся ночью по расписанию, в который включён сплошной UPDATE таблицы и длящийся более 30 сек. А другой человек должен решить проблему отваливающихся по таймауту запросов во время выполнения этого скрипта. И человека, который решает конкретную проблему никто не спросил, можно ли апдейтить продакшен базу наживую. "Задумано" тут просто никак не ложится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2021, 14:55 |
|
|
start [/forum/topic.php?fid=52&fpage=28&tid=1880530]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 423ms |
0 / 0 |