Я запускаю несколько запросов с использованием Python и psycopg2.Я создаю одну большую временную таблицу с примерно 2 миллионами строк, затем извлекаю из нее 1000 строк, используя cur.fetchmany(1000)
, и выполняю более обширные запросы с этими строками.Обширные запросы самодостаточны, хотя - как только они выполнены, мне больше не нужны их результаты, когда я перехожу к следующей 1000.
Однако, из-за 1000000 строк, я получил исключение изpsycopg2:
psycopg2.OperationalError: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
Как ни странно, это произошло, когда я выполнял запрос на удаление некоторых временных таблиц, созданных более обширными запросами.
Почему это могло произойти?Есть ли способ избежать этого?Было досадно, что это произошло на полпути, а это значит, что мне нужно все повторить.Что может max_locks_per_transaction
иметь отношение к чему-либо?
ПРИМЕЧАНИЕ. Я не делаю никаких .commit()
с, но я удаляю все временные таблицы, которые я создаю, и я касаюсь только одного и того жеВ любом случае, 5 таблиц для каждой «расширенной» транзакции, поэтому я не понимаю, как из-за блокировки таблиц может возникнуть проблема ...