欢迎进入Wiki » FAQ » 大批量数据处理时,使用 session.clear 来提升性能?

大批量数据处理时,使用 session.clear 来提升性能?

在2014-11-06 11:42上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

同时处理大量数据时,会发现系统越跑越慢,每处理一条数据的时间越来越长,除了改用纯 jdbc、增加jvm内存等原始手段外,可以使用 hibernate session 的 flush、clear 方法类清空内存,从而达到性能提升的效果。

更详细的资料可以参考文档:Batch Import Performance With Grails and MySQL

示例代码如下,每处理 1000 条数据就清理一下 session:

Foobar.withNewSession{ session ->
   int i = 0
   for ( Foobar foobar in foolbarList ) {
       if ( ++i % 1000 == 0 ) {
            session.flush();
            session.clear();
       }
   }
    session.flush();
}
标签: grails hibernate
在2014-11-06 11:41上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号