使用PHP / PostgreSQL的大型数据库插入和更新策略[保留]

问题描述 投票:0回答:1

让我们想象一下一个最终有500k条目的postgres数据库。这些条目是通过PostgreSQL推荐的COPY命令创建的,因为该数据库不是自然增长的数据库,而是从庞大的xml数据源传输的。据我所知,PHP中的所有ORM都不真正能够处理如此大的数据源。即使使用批处理,它们至少也非常慢。内存不足也是我也遇到的一个常见问题...

我的想法是最初使用PostgreSQL的COPY语句导入,这非常快,但是这里没有一种机制可以考虑其他表之间的依赖关系。例如,在表A和表B之间创建关系。这些关系也表示在xml记录中。

是否有建议的方法来提供一个非常快速的解决方案,但在导入过程中还要注意一些逻辑?之后再导入普通表和建筑关系吗?但是我想那也将非常慢...

[另一个问题:如何基于庞大的初始导入,随后又以快速的方式为数据集添加数据?例如,如果我想从xml源导入(添加)一个以前对我不感兴趣的字段,但是现在我希望将此字段添加到每个记录中?

考虑到生产准备就绪的设置:也许在先构建数据库并用新数据库“交换”正在运行的数据库也是一个好主意?

每个小技巧都会有所帮助。

谢谢

php database postgresql bulkinsert
1个回答
0
投票

您可以按正确的顺序COPY到具有外键关系的表:如果表a引用表b,则首先将数据加载到b中。

一种替代方法是将所有约束放到表上,并在完成后重新创建它们。当加载大量数据时,这通常也更快,但可能无法像您所看到的那样少量获得胜利。]

© www.soinside.com 2019 - 2024. All rights reserved.