提升IBatis的性能的一些小细节
2013-03-27 13:11
204 查看
1.强烈建议使用parameterClass(除非没必要)。通过提供parameterClass,您可以获得更好的性能,因为如果框架事先知道这个类,就可以优化自身的性能。
2.resultMap中columnIndex 属性的使用,某些JDBC Driver可以大幅提高性能,某些则没有任何效果。
3.不要使用隐式的ResultMap,因为resultClass的自动映射也对性能有轻微的不利影响。因为读取ResultSetMetaData信息会使某些JDBC Driver变慢。
4.涉及到复杂类型属性查询时,如果产生了N+1式select,可以用联合查询和嵌套的属性映射来代替(1:1select),但是,更好的办法是使用延迟加载和字节码增强选项的子查询。但是,如果要缓存查询结果,则使用子查询(N+1式select)来缓存查询结果。
5.尽量避免复杂类型集合属性的使用,这种查询的效率很低(是典型的N+1select)。
6.为了提高性能,最好是手工明确地使用SqlMapClient的startTransaction(),commitTransaction()或rollbackTransaction()来划分事务范围,这样做可以减少连接池的通讯流量和数据库连接的初始化。
7.自己实现分页查询,不要使用iBatis自带的分页查询(queryForPaginatedList)和queryForList(String,int,int)。前者虽然实现了通过rowResult的分页,但是毕竟是通过jdbc的调用,不如直接通过sql语句的分页效率高(这在通过对海量数据库记录表进行查询是会有明显体现);后者更是将全部的记录读出到内存,再通过skip和max参数来分页,效率极低。
2.resultMap中columnIndex 属性的使用,某些JDBC Driver可以大幅提高性能,某些则没有任何效果。
3.不要使用隐式的ResultMap,因为resultClass的自动映射也对性能有轻微的不利影响。因为读取ResultSetMetaData信息会使某些JDBC Driver变慢。
4.涉及到复杂类型属性查询时,如果产生了N+1式select,可以用联合查询和嵌套的属性映射来代替(1:1select),但是,更好的办法是使用延迟加载和字节码增强选项的子查询。但是,如果要缓存查询结果,则使用子查询(N+1式select)来缓存查询结果。
5.尽量避免复杂类型集合属性的使用,这种查询的效率很低(是典型的N+1select)。
6.为了提高性能,最好是手工明确地使用SqlMapClient的startTransaction(),commitTransaction()或rollbackTransaction()来划分事务范围,这样做可以减少连接池的通讯流量和数据库连接的初始化。
7.自己实现分页查询,不要使用iBatis自带的分页查询(queryForPaginatedList)和queryForList(String,int,int)。前者虽然实现了通过rowResult的分页,但是毕竟是通过jdbc的调用,不如直接通过sql语句的分页效率高(这在通过对海量数据库记录表进行查询是会有明显体现);后者更是将全部的记录读出到内存,再通过skip和max参数来分页,效率极低。
相关文章推荐
- PHP学习之挖掘细节提升网站性能
- JAVA性能优化:35个小细节让你提升java代码的运行效率
- ibatis3.0存储过存的一些细节。
- 关于 Java Web 项目性能提升的一些思路
- 一些小细节让你的Java程序性能大幅提高
- 在细节上提升你的程序的性能
- 提升性能 Java程序优化的一些最佳实践
- SQL2005性能分析一些细节功能你是否有用到?(三)
- 同大家分享一些java程序性能提升的一些小技巧
- 提升性能 Java程序优化的一些最佳实践
- 关于 Java Web 项目性能提升的一些思路
- 基于Hyper-V的虚拟机性能提升的一些提示
- 关于Android内存、性能优化的一些细节
- 关于Android内存管理及性能优化的一些细节
- SQL2005性能分析一些细节功能你是否有用到?(二)
- 关于 Java Web 项目性能提升的一些思路
- java 性能优化:35 个小细节,让你提升 java 代码的运行效率
- 提升 .NET 程序性能的 一些 原则
- SQL2005性能分析一些细节功能你是否有用到?
- 提升 ASP.NET 程序性能的一些原则(2)