ReZero's Utopia.

Mysql InnoDB

Word count: 328Reading time: 1 min
2020/08/06 Share

Mysql InnoDB

InnoDB In-Memory Structures

1、Buffer Pool: 未落盘前数据的缓存位置

- LRU,链表
  1. Change Buffer: 要修改数据不在内存中时对应页修改的记录位置

    • 记录到 Change Buffer时,同时记录 redo log,然后再慢慢把数据 load 到内存,load 过来后,再把 Change Buffer 里记录的修改,应用到内存(Buffer
      Pool)中,这个动作叫做 merge;而把内存数据刷到磁盘的动作,叫 purge:

    • change buffer 只应用于二级索引(辅助索引),因为聚簇索引是唯一的,即每次插入修改都检查是否已经存在,因此不需要change buffer

  2. Adaptive Hash Index

    • 自适应哈希索引」(Adaptive Hash Index)。自适应,顾名思义,MySQL 会自动评估使用自适应索引是否值得,如果观察到建立哈希索引可以提升速度,则建立。
  3. Log Buffer 里的 redo log,会被刷到磁盘里

Operating System Cache

InnoDB On-Disk Structures

  1. 表空间(Tablespaces)

    • The System Tablespace

    • File-Per-Table Tablespaces

    • General Tablespace

    • Undo Tablespaces

    • Temporary Tablespaces

2、Doublewrite Buffer

- MySQL 在刷数据到磁盘之前,要先把数据写到另外一个地方,也就是 Doublewrite Buffer,写完后,再开始写磁盘。Doublewrite Buffer 可以理解为是一个备份(recovery),万一真的发生 crash,就可以利用 Doublewrite Buffer 来修复磁盘里的数据。
CATALOG
  1. 1. Mysql InnoDB
    1. 1.1. InnoDB In-Memory Structures
    2. 1.2. Operating System Cache
    3. 1.3. InnoDB On-Disk Structures