当前位置:Gxlcms > 数据库问题 > InnoDB存储引擎

InnoDB存储引擎

时间:2021-07-01 10:21:17 帮助过:23人阅读

    如果每一次改变都要进行提交,那么开销会很大,所以一般会使用一种Write Ahead Log策略,当事物提交的时候,先写日志再进行修改。日志可以帮助进行数据的恢复。    checkpoint技术主要是为了解决以下几个问题:   
    缩短数据库的恢复时间
    缓冲池不够用时,将脏页刷新到磁盘
    重做日志不可用时,刷新脏页
此外,当数据库缓冲池不够用,根据LRU算法会移除一些不常用的页,若此时的页为脏页则需要强制执行checkpoint。在这本书中作者把checkpoint分成了两种,Sharp Checkpoint和Fuzzy CheckpointSharp Checkpoint指:在数据库关闭的时候将所有的脏页进行刷新Fuzzy Checkpoint指:在数据库运行时候刷新,但是只刷新一部分的脏页
具体的Fuzzy Checkpoint可以分成4种:    Master Thread CheckPoint,在Master Thread的过程中发生,以1~10s的速度从缓冲池中的脏页进行刷新回磁盘,而且这个是异步的操作。    FLUSH_LRU_LIST Checkpoint InnoDB引擎需要差不多100个空白页进行使用(这是前提),进行操作之前需要检查(TM的1.1X之前),如果没有100个空白页就需要进行对后面的一部分脏页进行CheckPoint,这就是 FLUSH_LRU_LIST Checkpoint
    Async/Sync Flush CheckPoint 是重做日志中不可用的情况,这时需要强制将一些页刷新回磁盘。这时候的脏页是从脏页列表中选取的,若将已经写入到重写日志中带LSN标记为redo_lsn。
    
技术图片最后一种情况Dirty Page too much看名字就知道了,太多的脏页进行了刷新。
Master Thread工作方式1.0.X之间的Master Thread是最高线程优先级别,内部由多个循环组成:主键环、后台循环、刷新循环、暂停循环。Master Thread会根据情况进行切换。主循环是通过thread sleep来实现,这意味着每秒一次或者每10秒一次的操作其实是不准确的。在负载很大的情况下回有延迟,只能说大概在这个频率下。每一秒的操作包括:日志缓冲刷新到磁盘,即使这个事务还没有提交。合并插入缓冲。至多刷新100个InnoDB的缓冲池中的脏页到磁盘。如果没有用户活动,切换到background loop即使没有事务提交,引擎依然会重做日志的缓冲,将内容刷新到重做日志。合并插入缓冲不是每一次都发生会先去判断,前1秒的IO操作数据,如果小于5次就会发生,因为它认为当前是适合进行合并插入的。
InnoDB关键特性插入缓冲、两次写、自适应hash索引、异步IO、刷新相邻页

    




来自为知笔记(Wiz)

InnoDB存储引擎

标签:核心   过程   支持   算法   row   改变   content   spl   系统   

人气教程排行