【发布时间】:2018-01-06 00:06:06
【问题描述】:
在基于 Spring 的应用程序服务器上下文中运行的应用程序有时需要处理对一张大表的高速数据库插入。当前实现在底层使用 Spring Data 和 OpenJPA,并连接到 Amazon RDS (Postgresql 9.6) 数据库。当它需要持久化某些东西时,它只调用 Spring 提供的 save 方法。在测量性能后,我们发现它每秒可以写入大约 4000 条记录。
我们构建了一个虚拟应用程序来测试几种方法,并发现通过使用 4 个并行连接每批执行 1000 次插入可以产生最佳性能,大约每秒 13500 条记录。
现在,我们需要更改应用程序的代码以将其持久对象最多缓冲 1000 个(或以其他方式配置),当这些缓冲区已满或在某个超时时间后或服务器关闭时在这些缓冲区上运行批量插入过程。
有人遇到过这样的问题吗?有关线程问题、同步、数据结构的任何建议?
提前致谢, 阿德里安。
【问题讨论】:
-
要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describe the problem 以及迄今为止为解决它所做的工作。
-
@JoeC 有时我们想要固执己见的答案。在得到十个这样的答案后,我们可以自己进行比较并做出决定。现在,我们被一个通用的答案和使用一些巨型怪物库的提示所困。那不是很有用。将问题标记为已回答...
标签: java sql spring performance