• 有关MYSQL changebuffer的使用场景


    什么是changebuffer?

    在需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,Innodb会将这些更新操作缓存在change buffer

    中,这样就不需要从磁盘读入这个数据页了。在下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行change buffer中与这个页有关的操作。通过这种方式能保证这个数据逻辑的正确性。需要说明的是,虽然叫change buffer,实际上它是可以持久化的数据,也就是说change buffer 在内存中有拷贝,也会被写入到磁盘上。

    什么是purge操作?

    将change buffer中的操作应用到原始数据页,得到最新结果的过程称为purge。除了访问这个数据页会触发purge外,系统有后台线程会定期purge。在数据库正常关闭shutdown的

    过程中,也会执行purge操作。

    使用场景:

    因为purge的时候是真正进行数据更新的时刻,而change buffer的主要目的就是将记录的变更动作缓存下来,所以在一个数据页做purge之前,change buffer记录的变更越多,收益就越大。

    因此,对于写多杜少的业务,页面在写完以后马上被访问到的概率比较小,此时使用效果最好,比如日志系统,账号系统。

    反过来,假设一个业务的更新后立马会查询,那么即使满足了条件,将更新先记录在change buffer,但之后由于马上要访问这个数据页,会立即触发purge过程也难怪,

    这样随机访问的IO的次数不会减少,反而增加了change buffer的维护代价,所以这种业务模式,changebuffer 反而起到了副作用。

  • 相关阅读:
    短信编码总结
    在Linux下用C语言实现短信收发
    sshd_config配置详解
    SSH的通讯和认证
    linux安装tacacs+服务器
    Tacacs+认证详细调研
    伪分布配置完成启动jobtracker和tasktracker没有启动
    Hadoop学习记录(7)|Eclipse远程调试Hadoop
    Hadoop学习记录(6)|Eclipse安装Hadoop 插件
    Hadoop学习记录(5)|集群搭建|节点动态添加删除
  • 原文地址:https://www.cnblogs.com/ligtto2018/p/14086226.html
Copyright © 2020-2023  润新知