я должен делать коммит после каждого выполнения или после цикла - PullRequest
0 голосов
/ 31 мая 2019

у меня 2000 вставок в петле Я выполняю sql

Мой вопрос: должен ли я выполнять коммит после каждого цикла выполнения или после, чтобы минимизировать влияние на таблицу блокировок и не заботиться о буфере?

проблема: мой скрипт отправляет много запросов и они стоят в ожидании

Я не спрашиваю об ограничениях sql для x строк в коммите, а не об откате в коде. У меня вопрос по поводу очереди, которая полдня на сервере оракула неактивна, а некоторые ожидают и мешают запуску нового процесса.

1 Ответ

2 голосов
/ 31 мая 2019

2000 вставок близко к нулю.Тем не менее, было бы гораздо лучше, если бы вы могли вставить их сразу , используя один оператор INSERT, чем делать это в цикле.

Вообще говоря, выполните коммит, как только высделано с транзакцией.Скорее всего, оно не заканчивается на каждом шагу цикла, не так ли?Кроме того, фиксация в цикле (часто) приводит к Снимку ORA-01555 слишком старая ошибка .

Сказать, что "ваш скрипт отправляет много запросов" - что за них?SELECT s ничем не заблокированы.INSERT также не заблокированы (я полагаю, вы не блокируете всю таблицу, не так ли)?Если вы пытаетесь обновить строки, заблокированные другими пользователями, это, очевидно, не будет работать, пока они не будут освобождены.Вопрос в том, почему эти запросы ждут полдня?Пахнет как плохое управление .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...