事务

时间:2016-06-17 13:13:54

标签: postgresql transactions plv8

我们有一个postgres过程,其工作方式如下: -

1)将CSV文件拆分为每个记录有一行的表

2)pagent运行一个postgres函数,该函数读取每条记录并将其作为新记录或更新写入新表

3)触发器在新表上运行,并根据记录值运行plv8函数来更新其数据(涉及json处理的相当一部分,并且plv8是编码它的最简单方法)。第二次更新来自plv8,我们使用了以下模式: -

query = plv8.prepare('...');
query.execute(<params>);
query.free();

当我们监控这个时,我们看到处理5000条记录使用14Gb的虚拟内存。因此,CSV记录是&lt; 1k大小。在我们向表中添加新索引后,这变得非常严重。

我们应该在哪里寻找解决方案?它是否正常,是否与事务中更新的索引或其他因素相关联。

0 个答案:

没有答案