使用 postgreSQL v12 触发器支持 COPY

阿尔达·萨夫兰

我们有这对触发器和函数,我们在 psql 数据库上使用了最长时间。基本上,每次主表有新记录时都会调用触发器,并将每一行单独插入到每月分区中。以下是触发函数:

CREATE TRIGGER partition_mic_teams_endpoint_trg1 
  BEFORE INSERT ON "mic_teams_endpoint" 
FOR EACH ROW EXECUTE 
PROCEDURE trg_partition_mic_teams_endpoint('month');

我们的函数基于每行中的时间戳字段创建每月分区。

我有两个问题:

  • 列表项即使我尝试将一堆行从 CSV 复制到主表,此触发器/函数是否会单独插入每一行?这有效率吗?

  • 如果是这种情况,是否可以支持将数据复制到分区而不是插入。

谢谢,

注意:如果我没有提供足够的信息来回答,我很抱歉

劳伦兹·阿尔伯

是的,将分别为每一行调用行级触发器,这会使COPY速度变慢。

您可以尝试的一件事是AFTER使用转换表的语句级触发器,以便您可以

INSERT INTO destination SELECT ... FROM transition_table;

那应该更快,但您应该对其进行测试以确定。

有关详细信息,请参阅文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章