复合索引

复合索引,会先根据条件过滤掉索引,然后在根据索引结果回表,再次根据条件过滤结果

InnoDB缓存

InnoDb用一块内存作为IO缓存池,缓存池缓存索引快,以及数据块.
缓存逻辑上是由free list , flush list, LRU list
InnoDb的缓存算法,把LRU List 分为young sublist 和 old sublist 数据读取的时候,缓存块插入LRU List 中点, 数据块会由old 转移到young, 即LRU头部,较少访问的会从头部移动到尾部,进行淘汰.

InnoDB doublewrite

脏页刷新,双写,MySQL 数据页 16kb 与 IO数据页 不一致 4kb
原理 用系统表空间的一块连续的磁盘空间2mb 作为doblewrite 脏页刷新的时候,脏页副本写入系统表空间,然后再调用fsync刷新缓存,写入磁盘文件.
防止出现IO缓存
最后由后台线程,刷新到磁盘文件

因为磁盘的空间连续,防止出现大量的寻道时间

InnoDB重做日志

更新数据时候,
先读入buffer pool 记录加独占锁
UNDB信息写入表空间回滚段中,若事物失败,进行回滚操作
再次更改缓存页中的数据,更新记录写入rebo buffer
提交的时候,根据设置,写入redo log file 释放锁
最后不定时刷新

若中途事物失败,则根据表空间的回滚段中数据,进行回写

事物的原理 本质是磁盘空间的一大段连续的存储,减少机械硬盘的寻道时间. 有redo log 重做日志,即事物持久性的实现.
undo log 记录修改前的信息,用来确保事物的原子性,即事物提交失败的时候,通过事物日志进行回滚操作.

详细 https://juejin.im/post/5cb2e3b46fb9a0686e40c5cb

MySQL复制

依旧看不下去...第31章...