Mysql InnoDB
Mysql InnoDB
InnoDB In-Memory Structures
1、Buffer Pool: 未落盘前数据的缓存位置
- LRU,链表
Change Buffer: 要修改数据不在内存中时对应页修改的记录位置
记录到 Change Buffer时,同时记录 redo log,然后再慢慢把数据 load 到内存,load 过来后,再把 Change Buffer 里记录的修改,应用到内存(Buffer
Pool)中,这个动作叫做 merge;而把内存数据刷到磁盘的动作,叫 purge:change buffer 只应用于二级索引(辅助索引),因为聚簇索引是唯一的,即每次插入修改都检查是否已经存在,因此不需要change buffer
Adaptive Hash Index
- 自适应哈希索引」(Adaptive Hash Index)。自适应,顾名思义,MySQL 会自动评估使用自适应索引是否值得,如果观察到建立哈希索引可以提升速度,则建立。
Log Buffer 里的 redo log,会被刷到磁盘里
Operating System Cache
InnoDB On-Disk Structures
表空间(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 来修复磁盘里的数据。
- Post title:Mysql InnoDB
- Post author:ReZero
- Create time:2020-08-06 22:00:00
- Post link:https://rezeros.github.io/2020/08/06/mysql-innodb[0]/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments