我的Postgresql表中有一个名为traffic
的表。我的流量表交易触发了一些触发器。我有两个名为trigger1
和trigger2
的触发器。当行插入,更新或删除行时,将触发这些触发器。我想知道,SQL触发器如何影响事务性能?
如果我的流量表插入事务花费1毫秒,而trigger1
花费2毫秒,而trigger2
花费3毫秒,插入花费1 + 2 + 3 = 6毫秒吗?还是总插入事务1毫秒和触发器分别运行?
答案 0 :(得分:0)
触发器作为数据修改语句的一部分运行,因此,当语句完成时,触发器也是如此。在您的示例中,INSERT
将花费6毫秒。
这里有一个延迟约束触发器是一个例外,它将在整个事务提交后运行。如果您正在运行包含多个语句的事务,则这些触发器将在语句完成后运行。但是事务的总运行时间将是相同的。
答案 1 :(得分:0)
如果要批量插入/更新,则可以从语句级触发器中获得一些好处。这是劳伦兹·阿尔贝(Laurenz Albe)撰写的有关此主题的好博客文章,他已经向您发表评论。
https://www.cybertec-postgresql.com/en/rules-or-triggers-to-log-bulk-updates/