我已经运行并加载了相当多的 PostgreSQL 服务器。我需要在特定时间(午夜)拍摄特定表格的快照。这些表非常加载(大量更新和插入)。
最好的方法是什么?
编辑:我必须快照的表有大约 50.000.000 条记录。其中只有 5-20% 在一天内发生变化。
补充:实际上我有一个想法,为每个应该被映射的表添加插入/更新触发器,并将所有更改写入另一个每天分区的表。
请告诉我这是不是上帝的想法?
我已经运行并加载了相当多的 PostgreSQL 服务器。我需要在特定时间(午夜)拍摄特定表格的快照。这些表非常加载(大量更新和插入)。
最好的方法是什么?
编辑:我必须快照的表有大约 50.000.000 条记录。其中只有 5-20% 在一天内发生变化。
补充:实际上我有一个想法,为每个应该被映射的表添加插入/更新触发器,并将所有更改写入另一个每天分区的表。
请告诉我这是不是上帝的想法?
我会使用
pg_dump
或create table foo_log as select * from foo
听起来也不错。这也适用于规则,例如:
然后,每天:
每天动态创建表的主要区别在于您将在每次插入/更新时引入的开销,而不是一次性获取更新的行。
如果您正在运行混合工作负载(表上的 OLTP 和快照上的分析),您可以考虑复制和热备份
这将对负载重的服务器的影响减少到 0 - 你需要在 9.0 虽然......