Hibernate批处理大小混淆

16 浏览
0 Comments

Hibernate批处理大小混淆

这个程序连续进行了数以万计的插入操作。我以前从未使用过Hibernate。我得到的性能非常慢(如果我只是手动连接并执行SQL,速度快10-12倍)。根据很多Hibernate教程,我的batch_size设置为50。

下面是一个单个插入的日志 - 或许你可以帮我理解正在发生的情况:

开始插入
11:02:56.121 [main] DEBUG org.hibernate.impl.SessionImpl - 在时间戳13106053761打开会话                                                                                            
11:02:56.121 [main] DEBUG o.h.transaction.JDBCTransaction - 开始事务                                                                                                                               
11:02:56.121 [main] DEBUG org.hibernate.jdbc.ConnectionManager - 打开JDBC连接                                                                                                             
11:02:56.121 [main] TRACE o.h.c.DriverManagerConnectionProvider - 已检出的连接总数:0                                                                                                    
11:02:56.121 [main] TRACE o.h.c.DriverManagerConnectionProvider - 使用连接池的JDBC连接,池大小:0                                                                                          
11:02:56.121 [main] DEBUG o.h.transaction.JDBCTransaction - 当前自动提交状态:false                                                                                                    
11:02:56.121 [main] TRACE org.hibernate.jdbc.JDBCContext - 事务开始后                                                                                                             
11:02:56.121 [main] TRACE org.hibernate.impl.SessionImpl - 将刷新模式设置为:手动                                                                                                       
11:02:56.121 [main] TRACE o.h.e.def.DefaultLoadEventListener - 加载实体:[com.xyzcompany.foo.edoi.ejb.msw000.MSW000Rec#component[keyW000]{keyW000=F000    ADSUFC}]                           
11:02:56.121 [main] TRACE o.h.e.def.DefaultLoadEventListener - 为实体创建新代理                                                                                                       
11:02:56.122 [main] TRACE o.h.e.d.DefaultSaveOrUpdateEventListener - 保存瞬态实例                                                                                                           
11:02:56.122 [main] DEBUG o.h.e.def.AbstractSaveEventListener - 生成的标识符:component[keyW000]{keyW000=F000    ADSUFC},使用策略:org.hibernate.id.CompositeNestedGeneratedValueGenerator
11:02:56.122 [main] TRACE o.h.e.def.AbstractSaveEventListener - 保存[com.xyzcompany.foo.edoi.ejb.msw000.MSW000Rec#component[keyW000]{keyW000=F000    ADSUFC}]                                    
11:02:56.123 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 刷新会话                                                                                                                    
11:02:56.123 [main] DEBUG o.h.e.d.AbstractFlushingEventListener - 处理刷新时级联操作                                                                                                      
11:02:56.123 [main] DEBUG o.h.e.d.AbstractFlushingEventListener - 检查脏集合                                                                                                          
11:02:56.123 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 刷新实体并处理引用的集合                                                                                                 
11:02:56.125 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 处理未引用的集合                                                                                                 
11:02:56.125 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 调度集合的删除/(重新)创建/更新                                                                                   
11:02:56.126 [main] DEBUG o.h.e.d.AbstractFlushingEventListener - 刷新:插入1条记录,更新0条记录,删除62个对象的记录                                                                           
11:02:56.126 [main] DEBUG o.h.e.d.AbstractFlushingEventListener - 刷新:(重新)创建0个记录,更新0条记录,删除0个集合的记录                                                                                                                                                                                       
11:02:56.132 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 执行刷新                                                                                                                     
11:02:56.132 [main] TRACE org.hibernate.jdbc.ConnectionManager - 注册刷新开始                                                                                                             
11:02:56.132 [main] TRACE o.h.p.entity.AbstractEntityPersister - 插入实体:[com.xyzcompany.foo.edoi.ejb.msw000.MSW000Rec#component[keyW000]{keyW000=F000    ADSUFC}]                         
11:02:56.132 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - 准备打开PreparedStatement(已打开的PreparedStatement数:0,全局:0)                                                           
11:02:56.132 [main] DEBUG org.hibernate.SQL - 插入到MSW000(W000_DATA_REC,W000_FILE_FLAGS,KEY_W000)值(?,?,?)                                                      
11:02:56.132 [main] TRACE org.hibernate.jdbc.AbstractBatcher - 准备语句                                                                                                                 
11:02:56.132 [main] TRACE o.h.p.entity.AbstractEntityPersister - 反序列化实体:[com.xyzcompany.foo.edoi.ejb.msw000.MSW000Rec#component[keyW000]{keyW000=F000    ADSUFC}]                       
11:02:56.132 [main] TRACE org.hibernate.type.StringType - 将'    ADSUFCA'绑定到参数:1
11:02:56.132 [main] TRACE org.hibernate.type.StringType - 将' '绑定到参数:2                                                                                                         
11:02:56.132 [main] TRACE org.hibernate.type.StringType - 将'F000    ADSUFC'绑定到参数:3                                                                                            
11:02:56.132 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - 执行批处理大小:1                                                                                                             
11:02:56.133 [main] DEBUG org.hibernate.jdbc.AbstractBatcher - 准备关闭PreparedStatement(已打开的PreparedStatement数:1,全局:1)                                                          
11:02:56.133 [main] TRACE org.hibernate.jdbc.AbstractBatcher - 关闭语句                                                                                                                   
11:02:56.133 [main] TRACE org.hibernate.jdbc.ConnectionManager - 注册刷新结束                                                                                                               
11:02:56.133 [main] TRACE o.h.e.d.AbstractFlushingEventListener - 刷新后                                                                                                                          
11:02:56.133 [main] DEBUG o.h.transaction.JDBCTransaction - 提交                                                                                                                              
11:02:56.133 [main] TRACE org.hibernate.impl.SessionImpl - 自动刷新会话                                                                                                                  
11:02:56.133 [main] TRACE org.hibernate.jdbc.JDBCContext - 事务完成前                                                                                                       
11:02:56.133 [main] TRACE org.hibernate.impl.SessionImpl - 事务完成前                                                                                                       
11:02:56.133 [main] DEBUG o.h.transaction.JDBCTransaction - 提交JDBC连接                                                                                                           
11:02:56.133 [main] TRACE org.hibernate.jdbc.JDBCContext - 事务完成后                                                                                                        
11:02:56.133 [main] DEBUG org.hibernate.jdbc.ConnectionManager - 会话上的事务完成,连接释放模式设置为on_close;请确保关闭会话以释放JDBC资源!     
11:02:56.133 [main] TRACE org.hibernate.impl.SessionImpl - 事务完成后                                                                                                        
11:02:56.133 [main] TRACE org.hibernate.impl.SessionImpl - 关闭会话                                                                                                                     
11:02:56.133 [main] TRACE org.hibernate.jdbc.ConnectionManager - 执行清理                                                                                                                  
11:02:56.133 [main] DEBUG org.hibernate.jdbc.ConnectionManager - 释放JDBC连接(已打开的PreparedStatement数:0,全局:0)(已打开的ResultSets数:0,全局:0)                            
11:02:56.133 [main] TRACE o.h.c.DriverManagerConnectionProvider - 返回连接到池中,池大小:1                                                                                          
11:02:56.133 [main] TRACE org.hibernate.jdbc.JDBCContext - 事务完成后                                                                                                        
11:02:56.133 [main] DEBUG org.hibernate.jdbc.ConnectionManager - 会话上的事务完成,连接释放模式设置为on_close;请确保关闭会话以释放JDBC资源!     
11:02:56.134 [main] TRACE org.hibernate.impl.SessionImpl - 事务完成后                                                                                                        
完成插入

0