我的本地网络中有一个postgresql服务器,它托管内部数据库,用于内部ERP,电子商务和其他一些工具。尽管如此,我不断向现有表添加新行,因为我通过网络执行此操作,该过程不仅速度慢,而且在高峰时段加载服务器。 我正在考虑在其上插入另一个带有postgresql的服务器并使用这个intance,但是我想要某种复制 - 我在第二个实例上添加或修改的所有新数据,我希望与'main'服务器实例同步-诗。 我以前从未这样做过,任何信息都会有所帮助。
答案 0 :(得分:0)
通过多主复制执行此操作是搜索问题的解决方案。优化当前方法比在当前方法之上添加另一组复杂问题(多主复制)要好得多。
如果您真的想以这种方式玩多主复制,那么bucardo就是使用的工具。然而,这个答案的其余部分将寻找替代方案。
您真正想要做的第一件事是优化批量加载。执行此操作的最佳方法是确保整个批量加载作为单个事务运行。这样可以减少磁盘命中率,并确保所有行同时可见。如果您正在进行大量插入和更新,则可能需要先将所有内容加载到临时表中,然后运行单个查询,以便从临时表更新数据库。在Pg 9.2中,您可以将临时表设置为未记录,这也将为您带来一些性能优势(并且由于数据是暂时的,因此WAL不会为您带来任何好处)。
在验证批量加载是否以合理的方式完成之后,您应该做的第二件事是仔细分析所有内容。瓶颈并不总是你认为的瓶颈,有时问题可能是从触发器行为不端到缺失索引的一切。但是,看看那时的性能问题究竟是什么。您可能会发现它们很容易修复。