2012-07-25 32 views
0

我的本地网络中有一个postgresql服务器,它负责内部ERP,电子商务和其他一些工具的内部数据库。尽管如此,我还是不断向现有表添加新行,并且由于我通过网络执行了此操作,因此该流程不仅速度慢,而且还在高峰时段加载服务器。 我正在考虑插入另一台服务器上的postgresql,并与这个实例一起工作,但我想要某种复制 - 我在第二个实例上添加或修改的所有新数据,我想与'main'服务器实例同步,并且反之亦然。 我从来没有这样做过,任何信息都会有所帮助。本地网络中的Postgresql服务器复制

+0

如何处理PostgreSQL手册的第25章和Gregory Smith的“PostgreSQL 9.0高性能”第14章。 – LisMorski 2012-07-25 07:11:10

回答

0

通过多主复制来做到这一点是寻找问题的一种解决方案。优化当前的方法要比在当前的方法之上增加另一组复杂的问题(多主复制)要好得多。

如果你真的想用这种方式来玩多主复制,bucardo是使用的工具。然而,这个答案的其余部分将寻找替代品。

您真正想要做的第一件事就是优化您的批量加载。做到这一点的最佳方式是确保您的整个批量加载作为单个事务运行。这可以减少磁盘命中,并确保所有行同时可见。如果您正在执行大量的插入和更新操作,则可能需要先将所有内容加载到临时表中,然后运行一个查询,以便从临时表中更新您的数据库。在Pg 9.2中,您可以将临时表设置为不记录,这也会给您带来一些性能方面的好处(因为数据是暂时的,WAL不会为您购买任何东西)。

在您验证批量加载完成后,您应该做的第二件事是以一种理智的方式完成,即仔细分析一切。瓶颈并不总是你认为它们的地方,有时问题可能是触发器行为不端到缺少索引的一切。但请注意那时性能问题实际上是什么。您可能会发现它们很容易修复。

相关问题