我一直在尝试使用 spring 3.0 SimpleJdbcTemplate,插入 1500 条记录需要 5 分钟,而我需要几秒钟。使用直接 JDBC 插入。不知道我做错了什么。
问问题
2326 次
3 回答
6
如果您正在构建批处理,请考虑使用 Spring 批处理 -JdbcBatchItemWriter
使用适当的块大小设置,这将在不到一秒的时间内加载这 1500 条记录。
于 2010-08-13T11:59:28.043 回答
1
一些值得检查的事情:
- 开销可能在 Spring 在应用程序级别管理的事务上。查看您正在使用哪种事务管理器(查找具有 name 的 bean
transactionManager
)。如果您使用的是 JTA,那可能就是您的问题所在。由于 JDBC 速度很快,因此瓶颈似乎不是数据库。 - 根据您的应用程序使用该事务的方式,它可能会在完成所有 1500 个请求和提交之前将所有内容保存在内存中。您是否看到内存使用量有很大差异(Spring 应该高很多)?
- 在这两种情况下,您使用的是哪种数据库连接池?
快速分析您的应用程序的方法:
获取pid - "jps -l"
内存:(jmap -histo PID
检查是否存在某种形式的内存泄漏)
检查引擎盖下发生了什么:(jstack PID
寻找缓慢或递归的方法调用)
于 2010-08-15T07:45:12.783 回答
-2
怎么用
jdbcTemplate.batchUpdate(new String[]{sql});
于 2015-03-31T23:20:02.573 回答