`
wj98127
  • 浏览: 264853 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate进行大数据量性能测试

阅读更多

近日为是否在项目中使用Hibernate进行大数据量的性能测试,有一些总结,

1) 在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.clear()或者session. Evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。

2) 对大数据量查询时,慎用list()或者iterator()返回查询结果,

       1. 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。

      2. 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。

      3. 对于大数据量,使用qry.scroll()可以得到较好的处理速度以及性能。而且直接对结果集向前向后滚动。

3) 对于关联操作,Hibernate虽然可以表达复杂的数据关系,但请慎用,使数据关系较为简单时会得到较好的效率,特别是较深层次的关联时,性能会很差。

4) 对含有关联的PO(持久化对象)时,若default-cascade="all"或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。

5) 在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。

6) 对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。

7) Hibernate是以JDBC为基础,但是Hibernate是对JDBC的优化,其中使用Hibernate的缓冲机制会使性能提升,如使用二级缓存以及查询缓存,若命中率较高明,性能会是到大幅提升。

8) Hibernate可以通过设置hibernate.jdbc.fetch_size,hibernate.jdbc.batch_size等属性,对Hibernate进行优化。

分享到:
评论

相关推荐

    大数据量数据库优化.

    项目中使用Hibernate进行大数据量的性能测试,有一些总结, 1) 在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中 2) 对大数据量查询时,慎用list()或者iterator()返回查询结果, 3) 对于关联操作...

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    最全Hibernate 参考文档

    18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 调整抓取策略(Tuning fetch ...

    Hibernate教程

    19.1. 用XML数据进行工作 19.1.1. 指定同时映射XML和类 19.1.2. 只定义XML映射 19.2. XML映射元数据 19.3. 操作XML数据 20. 提升性能 20.1. 抓取策略(Fetching strategies) 20.1.1. 操作延迟加载的关联 20.1.2...

    hibernate3.04中文文档.chm

    19.1. 用XML数据进行工作 19.1.1. 指定同时映射XML和类 19.1.2. 只定义XML映射 19.2. XML映射元数据 19.3. 操作XML数据 20. 提升性能 20.1. 抓取策略(Fetching strategies) 20.1.1. 操作延迟加载的关联 ...

    Hibernate3+中文参考文档

    18.1. 用XML数据进行工作 18.1.1. 指定同时映射XML和类 18.1.2. 只定义XML映射 18.2. XML映射元数据 18.3. 操作XML数据 19. 提升性能 19.1. 抓取策略(Fetching strategies) 19.1.1. 调整抓取策略(Tuning fetch ...

    jpa-hibernate-jdbc:比较同一个数据库的JPA,Hibernate和JDBC的性能

    背景开发人员普遍担心,使用工具(ORM)将严重影响其应用程序的性能,尤其是在数据库包含大量记录或需要批量获取数据的情况下。 一些开发人员创建了工作基准,表明使用ORM与使用原始JDBC相比,可导致性能下降10或100...

    hibernate 框架详解

    用XML数据进行工作 19.1.1. 指定同时映射XML和类 19.1.2. 只定义XML映射 19.2. XML映射元数据 19.3. 操作XML数据 20. 提升性能 20.1. 抓取策略(Fetching strategies) 20.1.1. 操作延迟加载的关联 ...

    db-util:如果您使用的是JPA和Hibernate,则此工具可以在测试过程中自动检测N + 1个查询问题

    此外,借助Hypersistence Optimizer,您可以在测试过程中检测到所有此类问题,并确保不会将影响数据访问层性能的更改部署到生产环境中。 是您期待已久的工具!训练如果您对现场培训感兴趣,我可以为您提供

    CSHibernate .Net轻量通用数据层框架(全部源码)

    C#版的Hibernate,本来想用nHibernate的,但是那玩意嫌太大,所以就自己写了个简单的O/R,实现的功能主要是通用的数据访问层操作,增删查改和事务控制,暂时就支持sql2005和oracle10g两种 这是个生成器,一些功能...

    低清版 大型门户网站是这样炼成的.pdf

    第5章 hibernate 3持久化技术实践与性能优化 271 5.1 操作持久化对象的常用方法介绍 271 5.1.1 使用session的begintransaction()方法 272 5.1.2 使用session的close()方法 273 5.1.3 使用session的connection()...

    FastBuilder:FastBuilder是一个快速开发以及高性能,高扩展性的ORM框架,灵活支持多数据库切换,读写分离,同时支持Mysql和Oracle数据库, 并且上手快,在DAO层开发效率节约50%以上, 欢迎加入FastBuilder技术交流群:236719790

    性能测试,根据网友对其它持久层框架(SpringJDBC,Mybatis,Hibernate)的测试,1万条数据查询前1000条数据(网友测试),并循环执行求平均时间。 同样的测试方式,FastBuilder使用20万条数据查询前1000条数据(20倍的数据...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接,此外,对个人页面的访问量也在随时进行统计,并在个人页面中进行直观的显示。 博客主页面的用例图如图3所示: 图3 ...

    支持多数据库的ORM框架ef-orm.zip

    实际性能测试表明,EF的大部分操作都要快于Hiberante和MyBatis, 部分操作速度甚至数十倍于上述框架。 EF在极限插入模式下,甚至刷新了每秒10万条写入的记录。远远超过了其他框架。 一个初步的性能测试:测试代码...

    bonecp连接池

    在用C3P0数据连接池的时候,一旦并发上来就坑不住了,因为C3P0存在BUG,c3p0在从连接池中获取和返回连接的时候,采用了异步的处理方式,使用一个线程池来异步的 把返回关闭了(没有真正关闭)的连接放入连接池中。...

    火炬博客系统7

    Hibernate是一个优秀的开放源代码的对象关系映射(O/R Mapping)框架,它对JDBC进行了非常轻量级的对象封装,提供了强大高性能的对象到关系数据库的持久化服务,使程序员可使用面向对象思维来操纵数据库。...

    火炬博客系统6

    Hibernate是一个优秀的开放源代码的对象关系映射(O/R Mapping)框架,它对JDBC进行了非常轻量级的对象封装,提供了强大高性能的对象到关系数据库的持久化服务,使程序员可使用面向对象思维来操纵数据库。...

    火炬博客系统5

    Hibernate是一个优秀的开放源代码的对象关系映射(O/R Mapping)框架,它对JDBC进行了非常轻量级的对象封装,提供了强大高性能的对象到关系数据库的持久化服务,使程序员可使用面向对象思维来操纵数据库。...

    java-ee电子商城系统课程设计.doc

    Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合, 既可以在Java 的...

Global site tag (gtag.js) - Google Analytics