在表上触发(插入后)会减慢插入此表的速度

时间:2018-03-23 15:28:04

标签: postgresql triggers

我有一个大表(bo_sip_cti_event),它太大了甚至无法对此运行查询所以我创建了相同的表(bo_sip_cti_event_day),在bo_sip_cti_event上插入后添加了触发器将所有相同的值添加到bo_sip_cti_event_day,现在我在想是否显着减慢了bo_sip_cti_event的插入速度。

一般来说,在此表上插入减速操作后会触发吗?

2 个答案:

答案 0 :(得分:3)

是的,触发器必须减慢插入速度。

原因是关系数据库符合ACID:所有操作(包括触发器等副作用)必须在更新事务完成之前完成。因此触发器必须同步执行,并且消耗CPU,在您的情况下也是I / O,最终需要更多时间。没有绕过它。

答案 1 :(得分:1)

答案是肯定的:这是额外的开销,所以显然需要时间来完成额外触发器执行的事务。

你的设计让我想知道:

  • 您探索了加速大型桌子的所有选项。如果您有适当的索引等,即使数十亿行也可以处理得非常好。但这一切都取决于表格,设计,数据和查询。
  • 你的触发器到底在做什么。表名" _day"提出问题的时间和地点,以及如何在午夜彻底清理这张桌子。希望不要在触发器功能中,并且希望不要使用" DELETE FROM"。
相关问题