• 53.脏页落盘的时机


    1.前言

      数据在内存被更新后,由于wal机制,redo和binlog会先落盘,而数据脏页也会在后续喧杂额一定的时间落盘

    2.落盘时机

    • redo 写满

        redo log 大小是固定的,写完后会循坏覆盖写入。当有新的内容要写入时,系统必须停止所有的更新操作,将checkpoint向前推进到新的位置,但是在推进之前必须将覆盖部分的所有脏页都flush到磁盘上。此时整个系统不能再更新了,TPS会降为0,所以这种情况要尽量避免。

    • 内存不足需要淘汰数据页

        当系统内存不足,又有新的数据页要更新,就需要淘汰一些数据页,如果淘汰的是脏页,就需要flush到磁盘(如果是干净页就直接释放出来复用)

    • 系统空闲的时候后台会定期flush适量的脏页到磁盘
    • Mysql正常关闭(shut down)时会把所有脏页都flush到磁盘
    • 脏页比例到达设定参数

        innodb_max_dirty_pages_pct默认75%,LRU内的脏块如果超过75%,强制性刷脏。

    其中系统后台会有如下操作:

      在loop主循环中又包含两种操作,分别是1s和10s的操作

    • 每1秒:

      (1) 日志缓冲刷新到磁盘,即使这个事务还没有提交

      (2) 刷新脏页到磁盘

      (3) 执行合并插入缓冲的操作

      (4) 产生checkpoint

      (5) 清除无用的table cache

      (6) 如果当前没有用户活动,就可能切换到background loop。

    • 每10秒:

      (1) 日志换冲刷新到磁盘,即使这个事务还没有提交

      (2) 刷新脏页到磁盘

      (3) 执行合并插入缓冲的操作

      (4) 删除无用的undo页

      (5) 产生checkpoint。        

  • 相关阅读:
    iOS上传AppStore被拒原因及处理方案
    记录一个打包upload时报错处理
    Git撤销merge
    设置UIButton上面是image,下面是title
    Sourcetree中切换到其他分支,临时分支的这次提交丢失
    修改字符串指定范围的颜色
    定时消失的Alert弹窗
    ALAsset 将资源转换为 NSData
    textField和textView的输入字数最大限制
    手机号码正则判断
  • 原文地址:https://www.cnblogs.com/zmc60/p/15968160.html
Copyright © 2020-2023  润新知