innodb redolog 刷盘策略:
1.master thread 每秒刷新一次 2.事务提交时刷新redo到磁盘 3.innodb_log_buffer剩余空间小于1/2时,刷新redo到磁盘。
复制
innodb checkpoint 刷脏数据策略:
innodb checkpoint分为sharp checkpoint,fuzzy checkpoint,类似于oracle的完全检查点和增量检查点。 sharp checkpoint发生在数据库关闭时将所有脏页都刷新到磁盘。 fuzzy checkpoint又分为: master thread checkpoint flush_lru_list checkpoint async/sync flush checkpoint dirty page too much checkpoint master thread checkpoint: master thread发生checkpoint,每秒或每十秒从缓冲池脏页列表刷新一定比例的页回磁盘,这是一个异步的过程。 flush_lru_list checkpoint: innodb存储引擎需要保证lru列表中有差不多N个空闲页可用。如果没有N个空闲页,会触发checkpoint将lru列表尾端的脏页移除。 N为innodb_lru_scan_depth的参数值。 async/sync flush checkpoint: 在重做日志文件不可用的情况下,需要强制将脏页列表中的一些脏页刷回磁盘。具体的刷页规则如下: (lsn:占8字节累增的值,表示已经写入的日志文件总字节数,记录数据库的变化。类似于oracle中scn号) checkpoint_age = redo_lsn - checkpoint_lsn async_water_mark = 75% * total_redo_log_size(多个重做日志文件总大小) sync_water_mark = 90% total_redo_log_size 若单个重做日志文件为1G,一共定义了两个重做日志文件,则total_redo_log_size=2G, async_water_mark=1.5G,sync_water_mark=1.8G 当checkpoint_age<async_water_mark 不会触发checkpoint刷盘 当async_water_mark<checkpoint_age<sync_water_mark,会从脏页列表异步刷新足够的脏页回磁盘,直到checkpoint_age<async_water_mark 当sync_water_mark<checkpoint_age,出现该情况可能是重做日志文件设置过小,会从脏页列表同步刷新足够的脏页回磁盘,直到checkpoint_age<async_water_mark 以上的刷新操作均由page cleaner thread完成 dirty page too much checkpoint: 当脏页列表中的脏页超过innodb_max_dirty_page参数值时,会导致innodb强制checkpoint刷新一部分脏页。该参数值默认为75
复制
oracle redolog 刷盘策略:
oracle 刷新redolog是通过后台进程LGWR完成的 LGWR的触发条件: ①commit ②重做日志缓存区中有1/3的重做日志未被写入磁盘 ③重做日志缓冲区中有大于1M的重做日志未被写入磁盘 ④每隔3秒
复制
oracle checkpoint 刷脏页策略:
oracle checkpoint 触发DBWR进程刷新脏数据 oracle checkpoint分为完全检查点和增量检查点,其中1,2,3,6触发增量检查点,4,5,7触发完全检查点 1.当发生日志切换的时候 2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_mttr_target参数设置的时候 3.当运行ALTER SYSTEM SWITCH LOGFILE的时候 4.当运行ALTER SYSTEM CHECKPOINT的时候 5.当运行alter tablespace XXX offline|online|begin backup|end backup|read only|read write的时候 6.buffer pool中脏页达到一定比例 7.shutdown immediate
复制
最后修改时间:2020-07-23 10:05:26
文章转载自数据库笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。