让我们想象一下一个最终有500k条目的postgres数据库。这些条目是通过PostgreSQL推荐的COPY命令创建的,因为该数据库不是自然增长的数据库,而是从庞大的xml数据源传输的。据我所知,PHP中的所有ORM都不真正能够处理如此大的数据源。即使使用批处理,它们至少也非常慢。内存不足也是我也遇到的一个常见问题...
我的想法是最初使用PostgreSQL的COPY语句导入,这非常快,但是这里没有一种机制可以考虑其他表之间的依赖关系。例如,在表A和表B之间创建关系。这些关系也表示在xml记录中。
是否有建议的方法来提供一个非常快速的解决方案,但在导入过程中还要注意一些逻辑?之后再导入普通表和建筑关系吗?但是我想那也将非常慢...
[另一个问题:如何基于庞大的初始导入,随后又以快速的方式为数据集添加数据?例如,如果我想从xml源导入(添加)一个以前对我不感兴趣的字段,但是现在我希望将此字段添加到每个记录中?
考虑到生产准备就绪的设置:也许在先构建数据库并用新数据库“交换”正在运行的数据库也是一个好主意?
每个小技巧都会有所帮助。
谢谢
您可以按正确的顺序COPY
到具有外键关系的表:如果表a
引用表b
,则首先将数据加载到b
中。
一种替代方法是将所有约束放到表上,并在完成后重新创建它们。当加载大量数据时,这通常也更快,但可能无法像您所看到的那样少量获得胜利。]