大批量数据处理时，使用 session.clear 来提升性能?
李小翔
2014-11-06 11:42

内容列表

同时处理大量数据时，会发现系统越跑越慢，每处理一条数据的时间越来越长，除了改用纯 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();
}