`
botan1314
  • 浏览: 25103 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

jdbc.fetch_size 和jdbc.batch_size

阅读更多
hibernate.jdbc.fetch_size 20 hibernate.jdbc.batch_size 20 这两个选项非常非常非常重要!!!将严重影响Hibernate的CRUD性能! C = create, R = read, U = update, D = delete Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数。 例如一次查询1万条记录,对于Oracle的JDBC驱动来说,是不会1次性把1万条取出来的,而只会取出Fetch Size条数,当纪录集遍历完了这些记录以后,再去数据库取Fetch Size条数据。 因此大大节省了无谓的内存消耗。当然Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。 这有点像平时我们写程序写硬盘文件一样,设立一个Buffer,每次写入Buffer,等Buffer满了以后,一次写入硬盘,道理相同。 Oracle数据库的JDBC驱动默认的Fetch Size=10,是一个非常保守的设定,根据我的测试,当Fetch Size=50的时候,性能会提升1倍之多,当Fetch Size=100,性能还能继续提升20%,Fetch Size继续增大,性能提升的就不显著了。 因此我建议使用Oracle的一定要将Fetch Size设到50。 不过并不是所有的数据库都支持Fetch Size特性,例如MySQL就不支持。 MySQL就像我上面说的那种最坏的情况,他总是一下就把1万条记录完全取出来,内存消耗会非常非常惊人!这个情况就没有什么好办法了 :( Batch Size是设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思。 Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。我做的一个测试结果是当Batch Size=0的时候,使用Hibernate对Oracle数据库删除1万条记录需要25秒,Batch Size = 50的时候,删除仅仅需要5秒!!! // 我们通常不会直接操作一个对象的标识符(identifier), 因此标识符的setter方法应该被声明为私有的(private)。这样当一个对象被保存的时候,只有Hibernate可以为它分配标识符。 你会发现Hibernate可以直接访问被声明为public,private和protected等不同级别访问控制的方法(accessor method)和字段(field)。 所以选择哪种方式来访问属性是完全取决于你,你可以使你的选择与你的程序设计相吻合。 所有的持久类(persistent classes)都要求有无参的构造器(no-argument constructor); 因为Hibernate必须要使用Java反射机制(Reflection)来实例化对象。构造器(constructor)的访问控制可以是私有的(private), 然而当生成运行时代理(runtime proxy)的时候将要求使用至少是package级别的访问控制,这样在没有字节码编入 (bytecode instrumentation)的情况下,从持久化类里获取数据会更有效率一些。 而hibernate.max_fetch_depth 设置外连接抓取树的最大深度 取值. 建议设置为0到3之间 就是每次你在查询时,会级联查询的深度,譬如你对关联vo设置了eager的话,如果fetch_depth值太小的话,会发多很多条sql
分享到:
评论

相关推荐

    优化Hibernate性能的几点建议

    此外,还可以通过分析Hibernate的性能指标来调整诸如`hibernate.jdbc.batch_size`等参数,以达到最佳性能平衡。 总之,通过上述几个方面的优化措施,可以显著提高基于Hibernate构建的应用程序的性能。在实际应用中...

    hibernate.cfg.xml中配置信息详解

    Hibernate.jdbc.fetch_size 属性用于控制 JDBC 的抓取数量。如果设置为非零值,Hibernate 将使用 JDBC 的抓取功能。 hibernate.jdbc.batch_size Hibernate.jdbc.batch_size 属性用于控制 Hibernate 的批量更新。...

    ewrwerw

    根据提供的部分内容,我们可以提炼出与Hibernate框架相关的两个关键配置参数:`hibernate.jdbc.fetch_size` 和 `hiberate.jdbc.batch_size`。这两个参数对于优化基于Hibernate的数据库操作性能至关重要。 ### 1. ...

    让hibernate输出sql语句参数配置.doc

    hibernate.jdbc.fetch_size 参数用于指定 JDBC 抓取数量的大小(调用 Statement.setFetchSize())。其取值为非零值。 15. hibernate.jdbc.batch_size hibernate.jdbc.batch_size 参数用于指定 JDBC 批量抓取数量的...

    hibernate配置属性参数[定义].pdf

    2. `hibernate.jdbc.batch_size`:用于批量更新操作,设置后 Hibernate 可以利用 JDBC2 的批量更新功能,推荐值一般在 5 到 30 之间。 3. `hibernate.jdbc.batch_versioned_data`:开启后,Hibernate 为自动版本化...

    Hibernate3的配置参数汇总

    - `hibernate.default_batch_fetch_size`:设置默认的批量抓取大小,提高查询性能。 - `hibernate.default_entity_mode`:定义Session的默认实体模式,例如POJO或DTO。 这些配置参数可以帮助开发者根据具体项目...

    Hibernate 参数设置一览表.doc

    1. **hibernate.jdbc.fetch_size**:设置JDBC的抓取大小,以优化结果集的处理。 2. **hibernate.jdbc.batch_size**:用于批量更新操作,提高性能。通常建议值在5到30之间。 3. **hibernate.jdbc.batch_versioned_...

    hibernate参数配置

    13. **hibernate.jdbc.fetch_size**: 设置JDBC抓取(fetch)大小,非零值,通过`Statement.setFetchSize()`控制。 14. **hibernate.jdbc.batch_size**: 用于启用JDBC2批量更新,建议值在5到30之间。 15. **...

    hibernate 配置属性参数详情(全)

    1. **hibernate.jdbc.fetch_size**:设置JDBC的抓取大小,提高查询性能。 2. **hibernate.jdbc.batch_size**:用于批量更新,推荐值通常在5到30之间。 3. **hibernate.jdbc.batch_versioned_data**:开启后,...

    Hibernate 参数配置详解

    例如,通过设置合适的 `hibernate.max_fetch_depth` 和 `hibernate.default_batch_fetch_size` 可以显著提升应用性能;而启用 `hibernate.generate_statistics` 则有助于我们更好地监控和分析应用性能瓶颈。此外,...

    hibernate配置详解

    13. **hibernate.jdbc.fetch_size** 设置JDBC抓取大小,非零值表示从数据库一次性获取的数据量。 14. **hibernate.jdbc.batch_size** 设置批量更新的大小,推荐的值在5到30之间,有助于提升性能。 15. **...

    hibernate 详细配置

    hibernate.jdbc.fetch_size** 设置非零值以指定JDBC查询的抓取大小,提高数据读取效率。 **14. hibernate.jdbc.batch_size** 启用JDBC2的批量更新功能,推荐的值在5到30之间。 **15. hibernate.jdbc.batch_...

    Hibernate配置各种数据源详解

    Hibernate配置各种数据源 <!– 各属性的配置–> <!—为true表示将Hibernate发送给数据库的sql显示出来 –> ”show_sql”>true ...”jdbc.fetch_size”>50 ...”jdbc.batch_size”>30</property>

    hibernate.properties

    #hibernate.default_batch_fetch_size 8 ## rollback generated identifier values of deleted entities to default values #hibernate.use_identifier_rollback true ## enable bytecode reflection...

    Hibernate.cfg.xml配置总结[借鉴].pdf

    批量操作可以提高数据库操作效率,`jdbc.fetch_size`和`jdbc.batch_size`属性分别控制查询时的批处理大小和更新/删除操作的批处理大小: ```xml <property name="jdbc.fetch_size">50 <property name="jdbc.batch_...

    hibernate配置参数详解

    1. **`hibernate.jdbc.fetch_size`**: JDBC的取结果集的大小。 ```properties hibernate.jdbc.fetch_size=100 ``` 这个配置项指定了每次从数据库获取数据时的最大行数,适用于大数据量的场景。 这些配置项的...

    ajax配置模版

    <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size} <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size} ``` - **`propertyConfiguer`**: 使用`...

    hibernate详解

    在性能优化方面,`jdbc.fetch_size`和`hibernate.jdbc.batch_size`是非常重要的属性。`jdbc.fetch_size`决定了JDBC Statement从数据库中一次性取出的数据量,这可以减少网络传输和内存消耗。然而,并非所有数据库都...

Global site tag (gtag.js) - Google Analytics