Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Pg locks-具有空transactionid和pid的数千行_Postgresql - Fatal编程技术网

Postgresql Pg locks-具有空transactionid和pid的数千行

Postgresql Pg locks-具有空transactionid和pid的数千行,postgresql,Postgresql,我的一个内部工具正在处理postgresql数据库,它开始抛出异常:共享内存不足。有一个提示“您可能需要增加每个事务的最大锁数”,我试图将其设置为128,但没有帮助。我发现在工具运行一段时间后,pg_锁表中有数千条记录。即使在停止工具后,行仍保留在那里。对我来说奇怪的是pid和transactionid是空的。大多数行的列virtualtransaction设置为'-1/0',模式为'siredlock',被授予'True',锁类型为'Page',或“元组”。这意味着,我应该从哪里开始寻找问题?

我的一个内部工具正在处理postgresql数据库,它开始抛出异常:共享内存不足。有一个提示“您可能需要增加每个事务的最大锁数”,我试图将其设置为128,但没有帮助。我发现在工具运行一段时间后,pg_锁表中有数千条记录。即使在停止工具后,行仍保留在那里。对我来说奇怪的是pid和transactionid是空的。大多数行的列virtualtransaction设置为'-1/0',模式为'siredlock',被授予'True',锁类型为'Page',或“元组”。这意味着,我应该从哪里开始寻找问题?需要提到的是,该工具正在使用准备好的事务。从pg_prepared_xacts查询选择*;只返回一行。Postgres 9.6版。

您使用的是可序列化的隔离级别,它需要大量内存来存储SI锁,即使在事务提交后也必须保留SI锁


增加每笔交易的最大锁数。甚至更多。

谢谢!即使在关闭该工具后,pg locks表中仍有这么多行是正常的吗?另外,如果read committed足够,那么更改隔离级别是否是一个好主意?如果您不需要可序列化的
,您不应该使用它,因为它不是免费的(如您所见)。过一会儿锁就应该打开了。