InnoDB存储引擎

1、脏页

linux内核中的概念,因为硬盘的读写速度远赶不上内存的速度,系统就把读写比较频繁的数据事先放到内存中,以提高读写速度,这就叫高速缓存,linux是以页作为高速缓存的单位,当进程修改了高速缓存里的数据时,该页就被内核标记为脏页,内核将会在合适的时间把脏页的数据写到磁盘中去,以保持高速缓存中的数据和磁盘中的数据是一致的。

2、后台线程

  • Master Thread
    核心后台线程,负责将缓冲池数据异步刷新到磁盘,保证数据一致性
  • IO Thread
    负责IO请求的回调处理
  • Purge Thread
    回收已经使用并分配的undo页
  • Page CLeaner Thread
    将脏页的刷新操作放到这个单独的线程中完成

3、内存

  • 缓冲池
    1、基于磁盘的数据库系统使用缓冲池技术提高数据库整体性能
    2、是一块内存区域
    3、页从缓冲池通过一种称为Checkpoint的机制刷新回磁盘
    4、缓存的数据页类型有:索引页、数据页、undo页、插入缓冲页、自适应哈希索引页、InnoDB存储的锁信息、数据字典信息

  • LRU列表
    对缓冲池的页进行管理,加入了midpoint位置,新读取到的页放入到LRU列表的midpoint位置

  • Free列表
    当数据库刚启动时,LRU列表是空的,这时页都存放在Free列表中

  • Flush列表
    脏页列表。注意:脏页既存在于LRU列表也存在于Flush列表,LRU用于管理缓冲池中页的可用性,Flush用于管理将页刷新回磁盘

  • 重做日志缓冲

  • 额外的内存池

4、Checkpoint技术

  • 将缓冲池的脏页刷回磁盘
  • Sharp Checkpoint发生在数据库关闭时将所有脏页刷新回磁盘
  • 在InnoDB存储引擎内部使用Fuzzy Checkpoint进行页刷新,即只刷新一部分脏页而不是所有脏页回磁盘

5、InnoDB关键特性

  • 插入缓冲

1、Insert Buffer和数据页一样也是物理页的一个组成部分

你可能感兴趣的:(InnoDB存储引擎)