给定:@Stateless
EJB、JTA Mysql 数据源中的方法和我试图在一个循环中坚持的大约 5000 个实体的列表:
List<MyObj> objList = entityManager.createNamedQuery("Q1", MyObj.class).getResultList();
for(MyObj obj : objList) {
long start_time = Calendar.getInstance().getTimeInMillis();
entityManager.persist(obj);
long end_time = Calendar.getInstance().getTimeInMillis();
logger.info("Object saved in " + (end_time - start_time) + "ms");
}
entityManager.close();
日志显示性能逐渐下降15ms
,以180ms
节省每个实体的时间。我相信 Mysql 服务器设置远远超出了此任务的需要 - 它显示 CPU 和 I/O 操作的增加微不足道。每次EntityManager
更新后刷新都没有效果。
这种性能下降的原因可能是什么?请指出我正确的方向。