在特定时间自动创建表的快照的最佳方法是什么?

Wor*_*ker 3 postgresql snapshot

我已经运行并加载了 PostgreSQL 服务器。我需要在特定时间(午夜)拍摄特定表的快照。这些表非常加载(大量更新和插入)。

最好的方法是什么?

编辑:我必须快照的表有大约 50.000.000 条记录。他们中只有 5-20% 在一天内发生变化。

补充:实际上我有一个想法,为每个应该被创建的表添加插入/更新触发器,并将所有更改写入另一个每天分区的表。

请告诉我这是否是上帝的主意?

Den*_*rdy 5

我会使用pg_dumpcreate table foo_log as select * from foo


补充:实际上我有一个想法,为每个应该被创建的表添加插入/更新触发器,并将所有更改写入另一个每天分区的表。

请告诉我这是否是上帝的主意?

听起来也不错。这也适用于规则,例如:

create rule as on insert to yourtable_log__ins
do also
insert to yourlogs select new.*;
Run Code Online (Sandbox Code Playgroud)

然后,每天:

begin;
create table yourlogs_[date] () inherits (yourlogs);
create or replace rule yourlogs__ins as on insert to yourlogs
do instead
insert into yourlogs_[date] select new.*;
commit;
Run Code Online (Sandbox Code Playgroud)

每天动态创建表的主要区别在于您将在每次插入/更新时引入的开销,而不是一次性获取更新的行。