• 数据库性能之--ibatis cache应用


    (1)
    利用cache是提升性能的一个很重要方式!
    cacheModel节点
    定义了本映射文件中使用的Cache机制:
    <cacheModel id="userCache" type="LRU">
    <flushInterval hours="24"/>
    <flushOnExecute statement="updateUser"/>
    <property name="size" value="1000" />
    </cacheModel>
    这里申明了一个名为"userCache"的cacheModel,之后可以在Statement申明中对其进行引用:
    <select id="getUser"
    parameterClass="java.lang.String"
    resultClass="user"
    cacheModel="userCache"
    >
    这表明对通过id为"getUser"的Select statement获取的数据,使用cacheModel "userCache"进行缓存。之后如果程序再次用此Statement进行数据查询,即直接从缓存中读取查询结果,而无需再去数据库查询。
    cacheModel主要有下面几个配置点:
    flushInterval :

    设定缓存有效期,如果超过此设定值,则将此CacheModel的缓存清空。
    size:         
    本CacheModel中最大容纳的数据对象数量。
    flushOnExecute:
    指定执行特定Statement时,将缓存清空。如updateUser操作将更新数据库中的用户信息,这将导致缓存中的数据对象与数据库中的实际数据发生偏差,因此必须将缓存清空以避免脏数据的出现。
     
    Statement相关的节点,分别为:
    insert
    delete
    update
    select
    procedure
     
    cache类型:
    1.
    LRU型Cache
    当Cache达到预先设定的最大容量时,ibatis会按照“最少使用”原则将使用频率最少
    的对象从缓冲中清除。
    2.
    在生产部署时,建议采用OSCache,OSCache 是得到了广泛使用的开源Cache 实现
    (Hibernate 中也提供了对OSCache 的支持),它基于更加可靠高效的设计,更重要的是,
    最新版本的OSCache 已经支持Cache 集群。如果系统需要部署在集群中,或者需要部署在
    多机负载均衡模式的环境中以获得性能上的优势,那么OSCache在这里则是不二之选。
    Ibatis中对于OSCache的配置相当简单:
    <cacheModel id="userCache" type="OSCACHE">
    <flushInterval hours="24"/>
    <flushOnExecute statement="updateUser"/>
    <property name="size" value="1000" />
    </cacheModel>
    之所以配置简单,原因在于,OSCache拥有自己的配置文件(oscache.properties)J。
    配置好之后,将此文件放在CLASSPATH 中,OSCache 在初始化时会自动找到此
    文件并根据其中的配置创建缓存实例。

    注意:
    本模块中其他Statement对数据的更新,其他模块对数据的更新,甚至第三方系统对数据的更新。否则,脏数据的出
    现将为系统的正常运行造成极大隐患。如果不能完全确定数据更新操作的波及范围,建议避免Cache的盲目使用。
    2.
    只读Cache能提供更高的读取性能,但一旦数据发生改变,则效率降低。系统设计时需根据系统的实际情况(数据发生更新的概率有多大)来决定Cache的读写策略。
  • 相关阅读:
    SPI
    CAP、BASEd、二阶段提交协议、三阶段提交协议、拜占庭将军问题、paxos、Raft、ZAB、NWR
    分布式理论笔记
    springboot自动配置原理
    docker网络
    Nginx主从配置、Keepalived、VRRP协议
    Nginx
    spring cloud
    Dockerfile、push到阿里云
    镜像、容器、部署tomcat、修改容器为新镜像、容器卷
  • 原文地址:https://www.cnblogs.com/SummerinShire/p/5426713.html
Copyright © 2020-2023  润新知