0

我的任务是分析一个 postgresql 数据库。第一个要求是查看添加记录的速度,消除所有可能的外部瓶颈,以便找到我们的理论极限。

起初,我创建了一个包含示例数据的 csv 文件,并使用 COPY 函数将其读入。现在,所有记录都通过一个函数添加update_or_add()。是否可以与 COPY 一起使用,update_or_add()或者是否有我没有考虑过的更好的解决方案?

4

1 回答 1

1

而不是“为每一行调用 update_or_add() 在行上”,您首选的方法应该是概括“update_or_add”以处理一组中的所有行。

COPY将来自外部源的数据放入一个TEMPORARYUNLOGGED表中。然后编写一个查询,将复制表中的数据合并到主表中,就像update_or_add()一次对所有行一样。如果可以同时修改主表,这可能需要锁定主表,LOCK TABLE main_table IN EXCLUSIVE MODE以便其他事务只能SELECT在合并进行时从它进行。

没有您的架构或不知道什么update_or_add很难说更多。猜测它是一个 upsert/merge 功能,在这种情况下,您可以通过锁定主表并进行整体合并来更有效地完成它的工作。

于 2012-10-23T22:24:35.827 回答