【发布时间】:2011-03-27 03:05:38
【问题描述】:
我有一个如下所示的数据结构:
Model Place
primary key "id"
foreign key "parent" -> Place
foreign key "neighbor" -> Place (symmetryc)
foreign key "belongtos" -> Place (asymmetric)
a bunch of scalar fields ...
模型表中有超过 500 万行,我需要在两个外键表中的每一个中插入 ~5000 万 行。我有SQL 看起来像这样的文件:
INSERT INTO place_belongtos (from_place_id, to_place_id) VALUES (123, 456);
每个大约 7 Gb。问题是,当我执行psql < belongtos.sql 时,在我的 AMD Turion64x2 CPU 上导入 ~400 万 行大约需要 12 小时。操作系统是 Gentoo ~amd64,PostgreSQL 是 8.4 版,本地编译。数据目录是绑定挂载,位于我的第二个扩展分区 (ext4),我认为这不是瓶颈。
我怀疑插入外键关系需要很长时间,因为psql 检查每一行的键约束,这可能会增加一些不必要的开销,因为我确信数据是有效的。有没有办法加快导入,即暂时禁用约束检查?
【问题讨论】:
-
是的,但我认为它只有 8.4+ 嗯必须查一下....
标签: sql database postgresql performance