0

假设我在一个 postgresql 数据库中做所有事情。我有 10 个源表用于创建一个巨大的非规范化表。这些源表经常更改,并在插入/更新/删除后触发触发器以近乎实时地修改非规范化表。问题是,我要加入的其中一些源表很大(一个表有 120M 和其他 25M 行),并且用于将新行插入非规范化表的语句执行很长时间(50-100k 行需要 20 多分钟)。

所以,我在考虑基于源表的更改更新(IUD)这个非规范化表上的更改的最佳解决方案是什么?我应该按计划运行这些操作,我应该为此专门指定一个特定的数据库副本,还是应该继续尝试使用触发器?

我愿意使用完全不同的方法,只要它在同一个数据库上可行。

4

1 回答 1

0

这听起来像没有好的和简单的解决方案。

也许您不需要一个巨大的非规范化表,并且对一些属性进行非规范化就足以满足您的查询速度。

如果没有,您可能需要一种用于非规范化数据的数据仓库,并每天以增量方式刷新它。理想情况下,那里的表已经预先聚合。

于 2022-02-03T14:48:01.730 回答