使用触发器到子表的复制命令比直接插入慢

时间:2013-12-23 16:27:55

标签: postgresql

我看到当我通过父表插入而不是直接插入子节点时,“copy from”语句(postgresql)的性能会降低。让我解释一下。

我有这样的表结构:
一个
| - > A1
| - > A2
| - > A3


| - >一个

其中A1 ...... An继承自A.

有一个触发器before_insert_into_A,在插入A之前插入其中一个表A1 ... An。

案例1:所以我做了一个'copy from'命令,我从一个文件复制到表A中。每一行都使用触发器重定向到其中一个子表。我这样做是为了大量的元组(几百万)。

案例2:现在,在另一次尝试中,我进行'复制'并直接插入其中一个子节点,而不是复制到父节点并通过触发器。

在这两种情况下,我插入几百万行记录插入吞吐量(每秒插入的行数)。我发现在案例2中,吞吐量几乎是情况1中吞吐量的两倍或三倍。

所以这是我最后的问题。预计吞吐量是否有差异?使用触发器会减慢插入吗?如果没有预料到,触发功能如何出现问题?有没有办法在案例1中增加吞吐量?

PS:我现在使用postgres 8.3。所以也许在postgresql 9.x中不是这种情况?没有在postgres 9.x中测试过这个。

0 个答案:

没有答案