我正在使用Python和psycopg2运行一系列查询。我创建了一个大的临时表,其中包含约200万行数据,然后通过使用
但是,当处理到大约1000000行时,我从psycopg2得到了一个异常:
有趣的是,当我在执行一个查询以删除一些更加复杂查询生成的临时表时,发生了这种情况。
为什么会这样?有没有办法避免这种情况?这很让人烦恼,因为这种情况发生在执行过程中,意味着我必须再次运行它。`max_locks_per_transaction` 与任何事情有关吗?
注意:我没有进行任何 `.commit()` 操作,但我正在删除我创建的所有临时表,并且对于每个“复杂”事务,我只接触相同的 5 张表,所以我不明白如何因为表锁用完而出现问题...
cur.fetchmany(1000)
每次获取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 张表,所以我不明白如何因为表锁用完而出现问题...