`
姜太公
  • 浏览: 74889 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

ibatis缓存效果测试

    博客分类:
  • java
阅读更多

条件:数据库有两张表:news和category,新闻10000 条数据,分类7条数据 ,新闻类(News)里包含一个分类(Category)  1)      不使用缓存,n+1 方式获取新闻对应的分类。读取全部(10000 条符合条件)11.38 秒左右。  

 

20 40 60 80 100
ibatis 逻辑分页 0.45 0.47 0.52 0.55 0.57
数据库物理分页 0.15 0.19 0.22 0.27 0.30

  2)      对分类使用缓存,新闻不使用缓存,n+1 方式读取新闻对应分类。读取全部(10000 条符合条件)0.89  

 

20 40 60 80 100
ibatis 逻辑分页 0.43 0.44 0.44 0.44 0.45
数据库物理分页 0.11 0.11 0.12 0.12 0.13

 

3)      新闻使用缓存(size:150)n+1 方式读取新闻对应分类。读取全部(10000 条符合条件)0.0007 秒,但很消耗内存。它是把所有的内容读出,作为缓存的一项,后面的查询都能从缓存命中,几乎不用时间。

  备注: 1.      第一次使用SqlMapClient 时,ibatis 会做一些初始化工作,所以应该取第二次后读取数据库所用的时间为测试结果

2.      ibatis 的把一次查询得到的结果作为缓存的“一项”,缓存size 的单位就是这个项。一个category List 是一项,单个的一个Category 也是一项,并且它们可以同时存在的,相互间没有任何关系。从缓存中取数据的条件是:当前查询和缓存项对应的查询语句相同,并且参数也相同。

 

从这个测试可以看出,对1对1关联,如果被关联的一方数据量不大,使用缓存可以解决n+1的效率问题。当然,也可以使用联合查询,我更倾向前者,方式优雅,效率不低,而且内存消耗也比后者低。另外,ibatis的分页效果不太好,除非数据量很小,否则不要使用,才10000条数据,速度几乎比物理分页慢了3倍。数据量增大,会慢的更厉害。慎用列表的缓存,尤其是多条件查询生成的列表。如果各种条件组合有n中情况,如果这个n小于size,ibatis几乎会缓存整个数据库。

分享到:
评论
1 楼 finallygo 2011-02-25  
ibatis的缓存是针对SqlMapClient的还是session级别的?

相关推荐

    nhibernate与ibatis速度对比测试项目

    5. **缓存效果**:如果两者都启用缓存,可以看看它们在缓存管理上的表现。 测试结果的分析不仅要看平均执行时间,还要考虑内存占用、CPU利用率、数据库连接管理等因素。通常来说,如果iBatis的性能优于NHibernate,...

    ibatis_with_memcached

    4. **缓存策略**:Ibatis与Memcached集成后,可以设置不同的缓存策略,如LRU(最近最少使用)、FIFO(先进先出)等,以优化缓存效果。 集成过程主要包括以下几个步骤: 1. **安装Memcached**:在服务器上安装并...

    ibatis源码

    在iBatis源码中,可以看到许多测试类,这些测试类通常模拟了数据库操作,通过调用SqlSession的方法,验证SQL的执行效果,包括查询、插入、更新和删除等操作。同时,junit测试也可以用来检验映射文件(XML或注解)的...

    ibatis jar包

    6. 易于集成:Ibatis可以轻松地与Spring框架集成,实现依赖注入和事务管理,提高了系统的可测试性和可维护性。 在项目中使用Ibatis jar包,首先需要将其添加到项目的类路径下,通常这一步骤会在构建工具如Maven或...

    ibatis_修改sqlmap不重启

    3. 智能缓存策略:Ibatis支持多种缓存策略,包括本地缓存和二级缓存。如果开启了缓存,需要注意的是,修改SqlMap后可能需要清空缓存,以便应用能够立即反映出最新的查询逻辑。 三、开发工具辅助 现代的IDE如...

    四个struts1(2)+spring+ibatis+jquery整合实例

    6. **测试与优化**:编写单元测试和集成测试,确保各个组件正常工作。根据需求优化性能,如缓存策略、错误处理等。 这样的整合实例对于初学者来说,是一个很好的实践平台,能够帮助他们深入理解这些技术的协同工作...

    iBatis 轻量级持久层架构

    iBatis轻量级持久层架构是Java开发中用于数据库操作的一个流行框架,它提供了灵活的SQL映射机制,能够将SQL语句与Java代码分离,使得代码更易于维护和测试。以下是关于iBatis的一些关键知识点: 1. **Spring嵌套...

    第三方缓存整合mybatis.rar

    7. **测试与优化**:完成上述步骤后,进行单元测试和性能测试,检查缓存功能是否正常工作,并根据实际效果调整缓存策略,例如缓存过期时间、淘汰算法等。 整合第三方缓存与MyBatis不仅可以提高应用性能,还可以实现...

    spring3+struts2+ibatis Demo

    Spring 3是Java企业级应用中的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,使得组件间的耦合度降低,代码更加灵活和可测试。Spring还提供了一个强大的事务管理机制,以及对其他技术如JDBC、...

    框架性能分析

    在IT行业中,框架性能分析是优化应用程序的关键环节。Spring、Hibernate和iBatis都是Java开发中...对于性能敏感的项目,可能还需要对选定的框架进行优化,如调整配置、使用缓存或者结合使用多种框架以达到最佳效果。

    Java学习教程

    每个项目都涉及到不同的技术栈和技术点,例如使用Spring Boot进行快速开发、使用MySQL作为数据库、使用Redis缓存数据等。这些项目案例不仅能够帮助学习者了解实际开发流程,还能提升他们解决实际问题的能力。 以上...

Global site tag (gtag.js) - Google Analytics