与えられた: @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
各更新後のフラッシュは効果がありません。
このようなパフォーマンス低下の理由は何でしょうか? 私を正しい方向に向けてください。