
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.10.2018, 16:34
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Всем доброго, хочу использовать Код: plsql 1. , боюсь что в выборке могут быть залоченные записи. Как вообще эта проблема решается в случае использования оператора Код: plsql 1. ? всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.10.2018, 16:37
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogв выборке могут бытьКакой выборке? cobalt_frogКак вообще эта проблема решается в случае использования оператораА как ты её решаешь без использования оператора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.10.2018, 17:35
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogв выборке могут бытьКакой выборке? cobalt_frogКак вообще эта проблема решается в случае использования оператораА как ты её решаешь без использования оператора? 1. Выбираю список нужных строк таблицы и кидаю ее в коллекцию bulk-ом. 2. Произвожу с коллекцией необходимые манипуляции 3. Необходимо по этим записям данные в другой таблице, некоторые строки которые могу быть залочены. Без оператора можно решить разными способами, например использовать skip locked или update nowait и обрабатывать exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.10.2018, 18:40
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogБез оператора можно решить разными способамиНе считай, что задающие встречный вопрос такие же идиоты. Раз спросили, вероятно твои представления о проблеме имеют изъян, однозначно угадать который по изложению нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.10.2018, 17:01
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
я так понял если есть вероятность того, что записи могут быть залочены в другой сессии, использовать forall update нецелесообразно. Придется апдейтить записи построчно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.10.2018, 17:08
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogя так понял если есть вероятность того, что записи могут быть залочены в другой сессии, использовать forall update нецелесообразно. Придется апдейтить записи построчно. А что изменится? UPDATE залоченой записи повиснет что с FORALL что без него. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 09:32
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
SYcobalt_frogя так понял если есть вероятность того, что записи могут быть залочены в другой сессии, использовать forall update нецелесообразно. Придется апдейтить записи построчно. А что изменится? UPDATE залоченой записи повиснет что с FORALL что без него. SY. Можно перед update - ом каждой строики в цикле сделать Код: plsql 1. если перед в exeption не вылетит, то апдейтить. Е сть альтернативный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 09:38
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogМожно перед update - ом каждой строики в цикле сделатьТ.е. для тебя select for update + update = update? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 10:00
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogЕсть альтернативный вариант?cobalt_frog1. Выбираю список нужных строк таблицы и кидаю ее в коллекцию bulk-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 10:09
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Есть ненулевая вероятность, что даже если коллекцию буду набирать Код: plsql 1. , то за время прохождения всего цикла какой нить процесс не попытается залочить одну из этих записей (так вот реализовали умельцы до меня), поэтому гарантированынй способ вижу следующим: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 10:22
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogЕсть ненулевая вероятность, что даже если коллекцию буду набирать Код: plsql 1. , то за время прохождения всего цикла какой нить процесс не попытается залочить одну из этих записейЕсли собрался циклить по залоченному, незачем коммитить в теле цикла. Тем более, что в forall не сможешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 11:31
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogЕсть ненулевая вероятность, что даже если коллекцию буду набирать Код: plsql 1. , то за время прохождения всего цикла какой нить процесс не попытается залочить одну из этих записейЕсли собрался циклить по залоченному, незачем коммитить в теле цикла. Тем более, что в forall не сможешь. Хочу поскорее отпустить блокировку, пока параллельный процесс ее не залочил. Думаете есть риск 01555? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 11:44
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogХочу поскорее отпустить блокировку, пока параллельный процесс ее не залочил.ты чего-то не понимаешь. Поэтому forall тебе вреден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 12:37
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
cobalt_frogМожно перед update - ом каждой строики в цикле сделать Код: plsql 1. если перед в exeption не вылетит, то апдейтить. Е сть альтернативный вариант? Что будешь делать с записями которые не удалось проапдейтить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2018, 13:06
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
SkilledJuniorcobalt_frogМожно перед update - ом каждой строики в цикле сделать Код: plsql 1. если перед в exeption не вылетит, то апдейтить. Е сть альтернативный вариант? Что будешь делать с записями которые не удалось проапдейтить? в таблицу для доката кидать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.10.2018, 09:31
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogХочу поскорее отпустить блокировку, пока параллельный процесс ее не залочил.ты чего-то не понимаешь. Поэтому forall тебе вреден. что может пойти не так? запись по залоченному списку после коммита разлочится, можете на тестовом примере проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.10.2018, 09:55
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogчто может пойти не так?Чудак, что будет с "параллельным процессом", если ты не "отпустишь блокировку"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 09:34
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogчто может пойти не так?Чудак, что будет с "параллельным процессом", если ты не "отпустишь блокировку"? будет ждать пока не отпущу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 10:03
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogбудет ждать пока не отпущу наивный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 10:06
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
123ййcobalt_frogбудет ждать пока не отпущу наивный сам ее залочит и будет ждать пока первый процесс не разлочит..не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 10:43
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogElicпропущено... Чудак, что будет с "параллельным процессом", если ты не "отпустишь блокировку"? будет ждать пока не отпущуИ как это соотносится с cobalt_frogпока параллельный процесс ее не залочил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 11:01
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogпропущено... будет ждать пока не отпущуИ как это соотносится с cobalt_frogпока параллельный процесс ее не залочил? я думал что это любому очевидно и не надо разжевывать, что второй процесс залочит запись и будет ждать пока в первом процессе не произойдет commit/rollback. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 11:02
|
|||
|---|---|---|---|
|
|||
forall update |
|||
|
#18+
Eliccobalt_frogЕсть ненулевая вероятность, что даже если коллекцию буду набирать Код: plsql 1. , то за время прохождения всего цикла какой нить процесс не попытается залочить одну из этих записейЕсли собрался циклить по залоченному, незачем коммитить в теле цикла. Тем более, что в forall не сможешь. почему не стоить коммитить в теле цикла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 11:09
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogпочему не стоить коммитить в теле цикла?Фиксировать-то можно, только смысла блокировать всё до цикла нет, вплоть до ora-1002. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.11.2018, 11:13
|
|||
|---|---|---|---|
forall update |
|||
|
#18+
cobalt_frogя думал что это любому очевидно и не надо разжевывать, что второй процесс залочит запись и будет ждать пока в первом процессе не произойдет commit/rollback.Тебе вредно не то что разжёвывать, но даже думать, потому что ты не владеешь терминологией. Тот, кто ждёт разблокировки записи, не может одновременно и "залочить" её. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1883252]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 436ms |

| 0 / 0 |
