小编Ary*_*rog的帖子

PostgreSQL COPY:删除和重新创建索引总是更快吗?

这个答案中,Erwin Brandstetter 建议

在大量 INSERT / COPY 之前删除索引并在之后重新创建索引也会快得多,因为增量调整每个插入行的索引比立即创建索引的成本要高得多。

1)即使表已经很大,这也是真的吗?如果没有,是否有一种简单的方法来估计收益递减点?例如,我一次将 30,000 条记录复制到一个已经有 1 亿行的表中。每个批次相对较小,但另一方面,目前要导入的总批次将是表大小的两倍以上。

2)如果我要在复制之前删除索引,如果复制是使用已按索引顺序的记录完成的,则重新创建索引会更快吗?

表上只有一个索引,即 5 列主键。

我在非生产机器上执行此操作,并且我已经禁用了 fsync、syncronous_commit、autovacuum 等。我正在 8 核机器上同时从四个单独的进程执行 COPY 操作。我有 12GB 内存,因此如果有帮助的话,我可以将 Maintenance_work_mem 设置为 1GB 或更多。

postgresql

6
推荐指数
1
解决办法
3725
查看次数

标签 统计

postgresql ×1