小编jbx*_*jbx的帖子

Postgresql 9 加速索引插入(JPA)

我有一个应用程序会生成大量需要快速插入的数据(大约 1300 万条记录)。我使用 JPA 2.0/Hibernate 和 Postgres 9.1,我设法实现了相当好的性能(每秒大约 25k 个插入),通过多线程和每几千个左右插入批量插入,在大约 8 分钟内完成整个运行。

但是,我注意到我有一些缺少索引的外键,我真的希望从分析的角度深入了解数据,并删除特定运行的数据。不幸的是,当我将这 3 个索引添加到获得最多插入的表中时,性能急剧下降到每秒 3k 左右。

有什么办法可以避免这种性能下降?我知道一种选择是在运行之前删除索引并在最后重新创建它们。另一个更笨拙的选择是在文件中生成最大表的数据并使用COPY. 我想我只能在关系中最大的表上执行此操作,因为我需要知道外键值(通过序列生成)。

这两种选择似乎都是黑客。有没有其他解决方案,可能对应用程序的干扰少一点?一些设置告诉 postgres 推迟索引或类似的东西?

欢迎任何想法。

postgresql performance index java postgresql-9.1 performance-tuning

6
推荐指数
2
解决办法
5407
查看次数