我正在使用hibernate来处理我的应用程序中的数据。应用程序运行正常但我在应用程序中面临时间相关的性能。方案是,我有一个远程定位的表,包含大约100000行。我必须使用一些映射将该数据插入本地数据库表(具有不同的结构)(以便我可以知道哪个远程表列等效于本地表列)。处理这些数据需要9个小时。我正在执行本机SQL查询。是否会导致性能问题?任何建议将不胜感激。
答案 0 :(得分:2)
设置以下Hibernate属性以启用批处理:
处理批处理后,您需要清除会话以清除内存。这允许您使用较小的堆大小,因此减少了长GC运行的可能性:
调用Session.flush(); session.clear();
使用new identifier generators如果您使用数据库序列,则可以选择the pooled-lo optimizer。使用hi / lo算法将减少序列调用并提高性能。
不要使用身份生成器,因为这将禁用批处理