`
xiexd
  • 浏览: 248753 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ibatis 缓存配置 相关参数说明和性能比较

    博客分类:
  • JAVA
阅读更多

1 SqlMapConfig.xml文档中参数配置
[standalone] 本属性表明XML文档是否是一个独立文档(standalone document)。它的值是根据XML声明(位于文档实体的首部)中的独立文档声明(在XML声明中是可选的)来设定的。如果没有独立文档声明,则该属性没有值(no value)。
关于XML,可以看一下这里的介绍:
http://www.w3china.org/translation/infoset_20011024_cn.htm


XML信息集Unicode中文版

至于cacheModelsEnabled属性指定了SQL Map运行时实例的缓存Model是否开启。

相关:
{
在<settings>元素中提供了多个属性来配置和优化SQL Map运行时的实例:
maxRequests属性指定了同时执行SQL语句最大运行数。

maxSessions属性指定了同一时间内活动的最大Session数。所谓Session就是一个请求或一个SQL Map运行时实例自动获得的会话。

maxTransactions属性指定了最大事务处理的线程数。

cacheModelsEnabled属性指定了SQL Map运行时实例的缓存Model是否开启。

lazyLoadingEnabled属性指定了持久化数据是否延迟加载。

enhancementEnabled属性指定了全局性的启用或禁用字节码增强,以优化访问POJO变量属性的功能。

useStatementNamespaces属性指定了在SQL Map映射文件中是否用全限定名来引用映射声明。
} 


2 
<settings cacheModelsEnabled="true" />是一定要配置的,不然cache不起作用。



readonly的配置



当readonly为true时,serialize是没有意义的,每个返回的对象就是cache中的对象,所以如果改动了该对象,则cache和数据库就不一致了。当readonly为true是不改动返回值要靠我们人工了。



当readonly为false时,serialize为false时,cache的实体是不需要实现Serializable的,但是很奇怪的
是,其返回的实体不是原本cache中的实体,改动返回值不会影响以后的返回值。serialize为true时,cache的实体是需要实现
Serializable的,其返回值应该是cache中的一个copy,所以可以随便修改而不影响cache。



看一个性能测试,对一行数据读取100000次。



条件                                       时间(毫秒)



没有cache     	                            53164 

readonly=true,                                 1406

readonly=false,serialize=false,               54538

readonly=false,serialize=true,                 4077



结论:

1 可以看出,加入cache后性能提升还是很可观的。

2 readonly=false,serialize=true的cache比readonly=true的慢一点,但是不是很多,想比没有cache的情况还是性能提升很大。

3 奇怪的readonly=false,serialize=false得到了解答,从测试结果看,应该是每一次都是到db直接读的,这个和没有配置cache差不多,又因为一些关于cache的code,应该比没有cache还慢一点点。

分享到:
评论

相关推荐

    ibatis 缓存配置策略

    以下是对iBatis缓存配置策略的深入解析: 首先,iBatis 的 Cache 键(key)是由多个因素组成的,包括对象的hashCode、checksum、查询参数、sqlmap ID、SQL语句以及调用方法名。由于这些因素的多样性,即使是微小的...

    iBATIS缓存

    iBATIS缓存分为一级缓存和二级缓存,它们在提升应用程序性能方面起着关键作用。 一级缓存是SqlSession级别的缓存,即每个SqlSession对象都有自己的缓存空间。当我们在一个SqlSession中执行SQL查询并获取结果后,...

    iBATIS缓存介绍

    ### iBATIS缓存介绍 #### 一、缓存介绍 **1.1 缓存对象** 理论上,Web分层设计的各个层都可以有缓存,Web中的任何对象都可以成为缓存的对象。例如: - **HTTP请求结果的缓存**:如页面数据或API响应。 - **...

    iBATIS缓存的使用方法

    ### iBATIS缓存的使用方法 在数据库访问框架iBATIS中,缓存机制是一项重要的功能,它能够显著提高应用程序的性能。本文将详细介绍iBATIS中的缓存使用方法,包括缓存模型的配置、不同类型的缓存控制器以及如何在SQL...

    Java_ibatis缓存技术

    在实际应用中,我们可以通过以下方式配置和使用iBatis缓存: - **启用二级缓存**:在MyBatis的配置文件中启用全局缓存,并在Mapper接口的XML配置文件中添加`&lt;cache&gt;`标签,指定缓存策略。 - **自定义缓存实现**:若...

    ibatis_数据缓存

    iBatis 数据缓存机制是提高数据库访问性能的重要手段,它允许将查询结果存储在内存中,以便后续相同查询能够快速获取数据,而无需每次都执行SQL查询。在深入理解iBatis的Cache概念之前,首先需要知道iBatis是一个轻...

    ibatis配置文件

    标题:“ibatis配置文件” 描述:“详细的ibatis配置文件,初来乍到,先打个招呼...” 在本文中,我们将深入探讨ibatis配置文件的关键...在实际应用中,根据项目需求调整这些参数,可以显著提升系统的性能和稳定性。

    ibatis api,ibatis文档,ibatis说明文档

    6. 缓存:Ibatis提供了本地缓存和二级缓存机制,有助于提高性能。 7. 执行性能:提供优化建议,如批处理、缓存使用等,以提升应用程序的运行效率。 总之,Ibatis是一个强大且灵活的Java持久层框架,其API、文档和...

    ibatis配置文件模板

    这是Ibatis的属性配置文件,主要用于存放数据库连接信息和其他配置参数。通常包含以下内容: - `driver`: 数据库驱动类名,例如`com.mysql.jdbc.Driver`。 - `url`: 数据库连接URL,包含了数据库服务器地址、端口...

    ibatis配置文件、映射文件详解

    在ibatis框架中,`sqlMapConfig.xml`是一个非常重要的配置文件,它主要用于设置ibatis的全局配置信息,包括数据库连接信息、环境配置以及其它运行时参数等。下面将对这个文件中的关键元素进行详细的解析。 ##### ...

    ibatis demo,ibatis例子,ibatis示例

    7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则可以在多个SqlSession之间共享,但需要注意并发控制和数据一致性问题。 8. **插件支持**:...

    ibatis 开发指南 和 iBATIS-SqlMaps两本图书

    7. **缓存机制**:解释iBATIS的缓存策略,包括本地缓存和二级缓存,以及如何自定义缓存实现。 8. **事务管理**:讨论iBATIS如何处理数据库事务,包括自动提交、手动提交和回滚操作。 9. **错误处理与调试**:分享...

    ibatis_with_memcached

    3. **配置Ibatis**:在Ibatis的配置文件中,定义一个Memcached的Cache实现,指定缓存的ID、超时时间等参数。 4. **创建缓存插件**:编写自定义的Ibatis拦截器,拦截SQL执行,实现数据的缓存和读取。 5. **在Mapper...

    ibatis开发指南 经典教材

    ibatis的核心是其XML配置文件,用于定义SQL映射规则、参数类型和返回类型。通过XML文件,开发者可以清晰地定义每个SQL语句,以及如何将结果集映射到Java对象。这种配置方式使得ibatis非常灵活,能够适应各种复杂的...

    ibatis api 帮助文档+IBATIS 开发文档

    5. **缓存**:IBATIS支持本地缓存和全局缓存,可以有效减少数据库访问,提高性能。 6. **事务管理**:讲解了如何使用IBATIS的事务管理功能,包括手动和自动提交、回滚以及事务隔离级别设置。 7. **插件**:IBATIS...

    iBatis各种文档集合

    文档会解释如何在iBATIS中配置和使用事务,以及如何与其他事务管理策略(如Spring的声明式事务管理)集成。 iBATIS还支持动态SQL,这意味着你可以根据业务逻辑在运行时构建SQL语句。这大大增强了SQL的灵活性,使得...

    ibatis_SqlMapConfig配置详解

    总结来说,`ibatis_SqlMapConfig`配置文件是iBATIS框架的中枢,它控制了iBATIS与数据库交互的方式,包括连接池、缓存策略、事务管理、性能优化等关键特性。正确理解和配置这个文件对于提高应用性能和保证数据一致性...

    ibatis 开发指南 2004

    10. **缓存机制**:解析iBatis的缓存功能,包括本地缓存和二级缓存,如何配置和使用,以及缓存的生命周期和更新策略。 11. **动态SQL**:详细阐述如何利用iBatis的动态SQL特性,通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, ...

    开发Ibatis需要的类库

    总之,开发Ibatis需要熟悉其核心类库和相关API,理解XML配置与Mapper接口的关系,掌握动态SQL和参数、结果集映射的技巧,以及如何在Spring环境下进行事务管理和缓存控制。同时,了解MyBatis Generator的使用,能提高...

Global site tag (gtag.js) - Google Analytics