条件:数据库有两张表: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几乎会缓存整个数据库。
分享到:
相关推荐
5. **缓存效果**:如果两者都启用缓存,可以看看它们在缓存管理上的表现。 测试结果的分析不仅要看平均执行时间,还要考虑内存占用、CPU利用率、数据库连接管理等因素。通常来说,如果iBatis的性能优于NHibernate,...
4. **缓存策略**:Ibatis与Memcached集成后,可以设置不同的缓存策略,如LRU(最近最少使用)、FIFO(先进先出)等,以优化缓存效果。 集成过程主要包括以下几个步骤: 1. **安装Memcached**:在服务器上安装并...
在iBatis源码中,可以看到许多测试类,这些测试类通常模拟了数据库操作,通过调用SqlSession的方法,验证SQL的执行效果,包括查询、插入、更新和删除等操作。同时,junit测试也可以用来检验映射文件(XML或注解)的...
6. 易于集成:Ibatis可以轻松地与Spring框架集成,实现依赖注入和事务管理,提高了系统的可测试性和可维护性。 在项目中使用Ibatis jar包,首先需要将其添加到项目的类路径下,通常这一步骤会在构建工具如Maven或...
3. 智能缓存策略:Ibatis支持多种缓存策略,包括本地缓存和二级缓存。如果开启了缓存,需要注意的是,修改SqlMap后可能需要清空缓存,以便应用能够立即反映出最新的查询逻辑。 三、开发工具辅助 现代的IDE如...
6. **测试与优化**:编写单元测试和集成测试,确保各个组件正常工作。根据需求优化性能,如缓存策略、错误处理等。 这样的整合实例对于初学者来说,是一个很好的实践平台,能够帮助他们深入理解这些技术的协同工作...
iBatis轻量级持久层架构是Java开发中用于数据库操作的一个流行框架,它提供了灵活的SQL映射机制,能够将SQL语句与Java代码分离,使得代码更易于维护和测试。以下是关于iBatis的一些关键知识点: 1. **Spring嵌套...
7. **测试与优化**:完成上述步骤后,进行单元测试和性能测试,检查缓存功能是否正常工作,并根据实际效果调整缓存策略,例如缓存过期时间、淘汰算法等。 整合第三方缓存与MyBatis不仅可以提高应用性能,还可以实现...
Spring 3是Java企业级应用中的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,使得组件间的耦合度降低,代码更加灵活和可测试。Spring还提供了一个强大的事务管理机制,以及对其他技术如JDBC、...
在IT行业中,框架性能分析是优化应用程序的关键环节。Spring、Hibernate和iBatis都是Java开发中...对于性能敏感的项目,可能还需要对选定的框架进行优化,如调整配置、使用缓存或者结合使用多种框架以达到最佳效果。
每个项目都涉及到不同的技术栈和技术点,例如使用Spring Boot进行快速开发、使用MySQL作为数据库、使用Redis缓存数据等。这些项目案例不仅能够帮助学习者了解实际开发流程,还能提升他们解决实际问题的能力。 以上...