从给定的时间间隔更新大表的正确方法

时间:2014-10-15 17:48:03

标签: postgresql

我有表Recommendations,其中包含每个用户100条建议,并且有50k +用户,因此表包含~5000000行。每行包含2列:UserId(FK),ContentId(fk)。建议来自Oryx,它位于不同的服务器上。我需要的是每24小时更新一次建议,尽可能减少对(数据库)性能的影响。这样做的最佳方式是什么?创建临时表,用数据填充然后交换表?或其他什么?

(更新建议意味着用全新的5000000行替换5000000行)

1 个答案:

答案 0 :(得分:0)

不需要临时表。只需在交易中进行

create table t (
    id integer primary key
);

insert into t 
select generate_series(1, 10);

begin;
delete from t;
insert into t 
select generate_series(11, 20);
commit;