• 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 能能减少对 磁盘数据,随机更新次数。

  • 相关阅读:
    Springboot 连接数据库
    线程专题 -- 线程的创建,状态,工作过程,常见方法
    MySQL中UPDATE语句里SET后使用AND的执行过程和结果分析
    SpringCloud | 通过电商业务场景让你彻底明白SpringCloud核心组件的底层原理
    避坑 | Java8使用并行流(ParallelStream)注意事项
    Spring--AOP、通知的执行顺序
    JVM--理解介绍
    JSF学习实战
    策略模式--实战1
    二叉树、二叉查找树、平衡树和红黑树概念
  • 原文地址:https://www.cnblogs.com/prader6/p/14962566.html
Copyright © 2020-2023  润新知