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

start [/forum/topic.php?fid=52&tid=1883252]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 480ms |

| 0 / 0 |
