美文网首页MySQL
MySQL InnoDB 概述

MySQL InnoDB 概述

作者: 黄金矿工00七 | 来源:发表于2018-07-31 03:05 被阅读0次
    MySQL InnoDB 存储引擎
    概述
    • 支持事务
      • 行锁设计
      • 支持MVVC
      • 支持外键
      • 提供一致性非锁定读
    体系架构
    image.png
    • 后台线程(多线程模型)
      • Master Thread
        负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓存、UNDO页的回收。
      • IO Thread
        使用AIO处理写请求,IO Thread负责IO请求的回调处理
      • Purge Thread
        事务提交后,回收已经使用并且分配的undo页。
    • 内存
      • 缓冲池
        InnoDB是基于磁盘存储的,并将其中的记录按照页的方式进行管理,使用缓冲池技术来提高数据库的整体性能。(读取页的时候,将页放到缓冲池中(FIX操作),下次读缓冲池中的即可;修改页时,先修改缓冲池中的页,再以一定的频率刷新到磁盘(CheckPoint机制))
        • 缓冲池管理
          数据库中的缓冲池通过LRU算法进行管理(LRU List),使用最频繁的页在LRU List的前端,当缓冲池中不能存放新读取到的页时,首先释放LRU列表尾端的页。
      • 重做日志缓冲
        InnoDB将重做日志信息放入该缓冲区,然后按照一定的频率将其刷新到重做日志文件。
      • CheckPoint机制
        • 缩短数据库恢复时间:
          数据库宕机时,数据库不需要重做所有的日志因为CheckPoint之前的页都已经刷新回磁盘。
        • 缓冲池不够用时,将脏页刷新到磁盘(Fuzzy CheckPoint 部分刷新)
          当缓冲池不够用时,根据LRU算法,释放list尾端的页,若该页为脏页,则强制执行CheckPoint,刷新回磁盘。
        • 重做日志不可用时,刷新脏页
          因为重做日志不是无限增大的,当到达一定数量时,由第一条所述,数据库恢复不需要这部分重做日志,这部分就可以被覆盖重用,若此时重做日志还有用,那么强制产生CheckPoint,将缓冲池中的页至少刷新到当前重做日志的位置。
          总结一下:缓冲池不够用时,将最少使用的脏页刷新回磁盘,释放该页;当重做日志不够用时,将缓冲池刷新到当前重做日志的位置,放弃一部分重做日志,用于新的重做日志;数据库关闭时,发生Sharp CheckPoint,全部刷新
    • InnoDB 关键特性
      • 插入缓冲
      • 两次写
      • 自适应哈希索引
      • 异步IO
      • 刷新邻接页

    相关文章

      网友评论

        本文标题:MySQL InnoDB 概述

        本文链接:https://www.haomeiwen.com/subject/pffcvftx.html