|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synoptic, Коммит я специально не делал... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 10:10 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
UPDATE (select B.KODRA , A.KDR_FIRST_ID from BORN B, ALL_AZ_AGS A WHERE A.AZ_AGS_ID = B.AZ_AGS_ID AND A.KDR_FIRST_ID IS NOT NULL) set KODRA = KDR_FIRST_ID ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 14:31 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticЕсли у ТС таблицы достаточно большие, то запуск такого апдейта может очень качественно подвесить ему базу )) LMag, кстати, а почему в коде коммита нет? Какую базу? Все что он сделает это row level lock да еще и на возможно меньшее число строк чем SELECT FOR UPDATE в оригинале и на меньшее время (в большинстве случаев SQL быстрее чем соответствующий PL/SQL script). А вопрос про коммит вообще показывает что ты не понимаешь как работает SELECT FOR UPDATE. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 18:22 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SY, чёт фигню какую-то написал. Всё в кучу собрал )) Попробуй сделать апдейт одним запросом на таблице гигов так тысячи на 2, с обновлением строк миллионов в 10 в высоконагруженной системе. Думаю, DBA кильнёт твою сессию гораздо раньше, чем ты думаешь )) К чему тут for update - совсем не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 19:01 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synoptic гигов так тысячи на 2Обычное дело, апдейт таблиц в пару терабайт всегда поручают тем, кто не знает sql. SynopticК чему тут for update - совсем не понял.Что имел ввиду СЯ, очевидно. К месту или невпопад, но "совсем не понять" нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 19:12 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticSY, чёт фигню какую-то написал. Всё в кучу собрал )) Попробуй сделать апдейт одним запросом на таблице гигов так тысячи на 2, с обновлением строк миллионов в 10 в высоконагруженной системе. Думаю, DBA кильнёт твою сессию гораздо раньше, чем ты думаешь )) К чему тут for update - совсем не понял. Боюсь ты так ничего и не понял. 1. При всех равных условиях (10 строк или 10 миллионов строк) PL/SQL script отработает (в большинстве случаев) медленнее чем одним SQL. 2. Как только ты всунешь commit так сразу ты потеряешь транзакционность (имеет ли это значение в данном конкретном случае это другой вопрос). 3. Как только ты всунешь commit так сразу получишь: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
4. Eсли уберешь for update то рискуешь потерять данные (ты select, кто-то update+commit, ты update поверх). SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2019, 20:28 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SY, извини, но ты пишешь очевидные вещи. Никто не спорит с тем, что SQL быстрее PL/SQL. Никто не говорит, что про то, что можно будет продолжить фечить курсор после коммита. Речь вообще о другом. Заранее извиняюсь за банальщину, но я говорил только про то, что применяя апдейты без ограничения по объёму блокировок и без оглядки на последствия, можно встрять на лёгкий паралич БД. И это будет и в случае чистого SQL и в случае PL/SQL. Сколько данных у ТС в таблице, сколько он обновляет и на сколько критичны блокировки мы не знаем. Но в высоконагруженных системах выборки лучше проводить с rownum<X, и выполнять коммиты для каждых Y строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 06:14 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synopticты пишешь очевидные вещи ... Заранее извиняюсь за банальщину...Для понимания, почему об одном "никто не говорит", а другое ты повторяешь который раз, озвучь, как ты отличаешь банальщину от очевидных вещей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 07:05 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
-2-, если ты переформулируешь свой вопрос в вид, доступный для понимания, я постараюсь на него ответить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 08:02 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticНикто не спорит с тем, что SQL быстрее PL/SQL. Это, скажем так, не совсем правда, причем в обеих частях утверждения, т.е. как найдутся люди, которые данный тезис оспорят, так и найдутся ситуации, в которых pl/sql справится быстрее/лучше. Что касается "update повесит базу" - то это очень дурной термин, близко не отражающий сути происходящего. Да и не каждый админ будет рубить блокирующую сессию, не разобравшись тщательно с прогнозируемым временем отката уже произведенных сессий изменений. По крайней мере, бывалый dba - не будет, сберовские подтвердят ;) Ибо встрять можно намного жестче в сравнении с невмешательством. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 14:00 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
andrey_anonymousSynopticНикто не спорит с тем, что SQL быстрее PL/SQL. Это, скажем так, не совсем правда, причем в обеих частях утверждения, т.е. как найдутся люди, которые данный тезис оспорят, так и найдутся ситуации, в которых pl/sql справится быстрее/лучше. Речь шла про конкретные скрипты SQL и PL/SQL [quote andrey_anonymous]SynopticЧто касается "update повесит базу" - то это очень дурной термин, близко не отражающий сути происходящего. Да и не каждый админ будет рубить блокирующую сессию, не разобравшись тщательно с прогнозируемым временем отката уже произведенных сессий изменений. По крайней мере, бывалый dba - не будет, сберовские подтвердят ;) Ибо встрять можно намного жестче в сравнении с невмешательством.Понятно что есть особенности. Например у нас, если DBA видит что кто-то отъел 500 Гб SGA, и это не "разрешённые" - продуктовые логины, то в адрес инициатора сессии, а также к его руководителю летит вопрос, всё ли у него хорошо )) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 16:31 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synoptic кто-то отъел 500 Гб SGAВ buffer cache? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 16:47 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synopticвыборки лучше проводить с rownum<Xлучше почитай про first_rows(), это гораздо правильнее и не ломает оптимизатор так, как присутствие rownum. Synopticи выполнять коммиты для каждых Y строкпрощайте транзакционность, консистентность и возможность нормального роллбэка... SynopticЗаранее извиняюсь за банальщинуэто не "банальщина", а искаженный и перевранный набор недомолвок и мифов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2019, 18:05 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
xtenderлучше почитай про first_rows(), это гораздо правильнее и не ломает оптимизатор так, как присутствие rownum. В индекс нельзя передать параметр, в то время как в rownum - без проблем. Или как-то можно? xtenderпрощайте транзакционность, консистентность и возможность нормального роллбэка....Какие роллбэки на проде? И что не так с транзакционностью, консистентностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 05:14 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticКакие роллбэки на проде? И что не так с транзакционностью, консистентностью? надеюсь Вы притворяетесь? commit ставится там, где надо по логике. если ставить его раньше, то вся логика полетит в случае сбоя, ведь сохранится лишь часть логической транзакции. классический пример перевод денег между банковскими счетами, если поставить промежуточный комит, после которого произойдет сбой, то деньги снимутся с одного счета, а на другом не появятся ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 06:27 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
alex-lsнадеюсь Вы притворяетесь? commit ставится там, где надо по логике. А где было заявлено иное? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 08:32 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synopticalex-lsнадеюсь Вы притворяетесь? commit ставится там, где надо по логике. А где было заявлено иное?Ты балабол? Synopticкстати, а почему в коде коммита нет?Логика тебя не колышет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 08:39 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
xtenderSynopticвыборки лучше проводить с rownum<Xлучше почитай про first_rows(), это гораздо правильнее и не ломает оптимизатор так, как присутствие rownum. о каком first_rows() идет речь ? режиме оптимизатора? .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 09:03 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
ElicSynopticпропущено... А где было заявлено иное?Ты балабол? Synopticкстати, а почему в коде коммита нет?Логика тебя не колышет. заканчивай уже придумывать и начни думать. А если не понимаешь, спроси. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Какую транзакционность, консистентность нарушает коммит в данном месте? Кстати, как выделить часть кода на форуме? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 09:23 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticКакую транзакционность, консистентность нарушает коммит в данном месте?Для утверждений про констистентность фрагмента кода не достаточно, нужно знать бизнес-правила. Одно определенно можно сказать про этот код - в нем не определено значение Y:Synopticвыполнять коммиты для каждых Y строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 09:33 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
-2-Для утверждений про констистентность фрагмента кода не достаточно, нужно знать бизнес-правила. Согласен. -2-Одно определенно можно сказать про этот код - в нем не определено значение YЭто код ТС. Да и понятно, что нужно переписывать код, чтобы "выполнять коммиты для каждых Y строк" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 09:52 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
SynopticДа и понятно, что нужно переписывать код, чтобы "выполнять коммиты для каждых Y строк" не надо переписывать! в этом и смысл, что commit там, где должен быть по логике. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2019, 16:17 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
alex-ls, речь немного о другом ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2019, 02:49 |
|
Курсор. Помогите с запросом.
|
|||
---|---|---|---|
#18+
Synopticxtenderлучше почитай про first_rows(), это гораздо правильнее и не ломает оптимизатор так, как присутствие rownum. В индекс нельзя передать параметр, в то время как в rownum - без проблем. Или как-то можно?что за бред... Какой ещё параметр в индекс? SynopticКакие роллбэки на проде? И что не так с транзакционностью, консистентностью?ох, рановато тебе ещё такие темы обсуждать.. Ты всерьёз считаешь, что роллбэки только для тестовых или девелоперских сред? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2019, 04:35 |
|
|
start [/forum/topic.php?fid=52&startmsg=39829740&tid=1882357]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 195ms |
0 / 0 |