org.postgresql.util.PSQLException:错误:超出共享内存

时间:2011-10-03 12:17:21

标签: java postgresql

我正在使用JAVA调用一个具有200多个DROP表语句的函数,我得到的是org.postgresql.util.PSQLException:错误:超出共享内存。 我应该遵循什么方法以避免共享memomry?

PS:限制是我无法更改与PostgresSQL相关的任何参数。

1 个答案:

答案 0 :(得分:1)

如果错误的原因在服务器端:在PostgreSQL中,函数总是在事务内执行。 DO块是匿名函数,并以相同的方式处理。因为即使像CREATEDROP这样的DML命令在PostgreSQL中也是事务性的,这些命令也会强调用于ROLLBACKCOMMIT的常用资源。

我的猜测是,丢弃大量的大桌子会占用大量内存。 因此,如果您不需要函数中的事务行为,最简单的方法是将大函数拆分为几个较小的函数。在单独的事务中调用每个函数。