膨大な量のエンティティを処理し、休止状態を使用して DB に永続化しています。テーブルに膨大な量のデータがある場合、トランザクションの開始に最大 1 分かかることがわかりました (Web サービスからのデータのフェッチに 3 時間近くかかる場合、同期プロセス全体に 20 時間かかりました)。
このメソッドの永続化ロジックを改善する方法はありますか?
final EntityManager em = emf.createEntityManager();
try {
final MfBranch branch = <get data from web service>
em.getTransaction().begin(); // bottleneck
em.merge(branch);
em.getTransaction().commit();
} finally {
DisposableUtils.closeQuietly(em);
}
マージまたはトランザクションのコミット操作に時間がかかるのは当然だと思いますが、なぜトランザクションの開始に時間がかかるのでしょうか?