zoukankan      html  css  js  c++  java
  • 有关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 反而起到了副作用。

  • 相关阅读:
    C++资源之不完全导引(下)
    Box2D:给你的Qt程序加上物理引擎
    优秀程序员45种习惯
    Android中AVD的使用以及错误处理方法
    C++资源之不完全导引(上)
    CSS制作横向菜单,如何让li元素在ul中居中?
    PHP SESSION
    函数返回值
    鼠标经过tr背景变色的js代码
    点击按钮下载
  • 原文地址:https://www.cnblogs.com/ligtto2018/p/14086226.html
Copyright © 2011-2022 走看看