我看到当我通过父表插入而不是直接插入子节点时,“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中测试过这个。