zoukankan      html  css  js  c++  java
  • mysql change buffer

    innoDb
    一 普通索引和唯一索引的查询过程: select id from T where k=5。


      1 根据b+树,普通索引在查询到第一条记录之后,会继续查询下一条记录,只到碰到第一个 k=5 的记录。
      2 唯一索引,会直接返回 查询到的第一条k= 5的记录。
      虽然普通索引多 一次查询,但是对于性能来说,这两者差不多。


    二 普通索引和唯一索引对更新性能的影响。


      1 在保证数据一致性的情况下,innoDb 数据更新的过程: 如果数据在内存中,直接进行更新,如果数据没有在内存中,就先把更新信息记录在 change buffer 中,等下次读取这条数据的时候,进行更新操作或者,后台线程自动进行更新操作。

      2 比如插入(4,400),这条记录,唯一索引,要先去判断数据是否存在,因此要把数据读取到内存中,再进行判断插               入,数据进入内存就可以直接进行更新数据了,因此没必要再更新change buffer 了。
       因此 change buffer 和普通索引一起使用,再更新比较多,而读取比较少(因为再读取change buffer 中做出改变的数据           的时候,会直接把数据更新同步到磁盘)的场景 性能更高。比如账单,日志等。
       3 change buffer 和redo log 的区别。
        change buffer 是再buffer pool 中的,数据的修改再 changeBuffer 中记录一份, 多分这种记录一起写入 redo log                      中。redo log 分为两部分,一部分是内存中的redo log buffer,另一部分是 磁盘山的 redo log file.
        因此change buffer 能减少对磁盘随机读取的次数,redo log 能能减少对 磁盘数据,随机更新次数。

  • 相关阅读:
    java之md5加密算法
    springboot之快速创建项目
    java之idea打jar包
    java只http改成https访问
    springboot之读取配置文件
    springboot之项目打包
    Git之fatal: remote origin already exists
    WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件
    转 JavaScript里的数组转化新方法Array.From
    网页特殊符号HTML代码大全
  • 原文地址:https://www.cnblogs.com/prader6/p/14962566.html
Copyright © 2011-2022 走看看