当前位置: 首页 > MySQL数据库

mysql脏页指的是什么

时间:2026-01-25 16:19:41

在mysql中,当内存数据页和磁盘数据页上的内容不一致时,则称这个内存页为脏页。刷脏页的场景:1、当redo log写满,mysql就会暂停所有更新操作,将同步这部分日志对应的脏页同步到磁盘;2、系统内存不足时,需要淘汰一部分数据页,如果淘汰的是脏页,就要先将脏页同步到磁盘;3、MySQL认为系统空闲的时候,有机会就同步内存数据到磁盘,这种没有性能问题。

脏页(内存页)

    干净页:内存和磁盘中的数据一致

    脏页:内存和磁盘中的数据不一致

    为什么会出现 脏页

    平时很快的更新操作,都是在写内存和日志。他并不会马上同步到磁盘数据页,这时内存数据页跟磁盘数据页内容不一致,我们称之为脏页

    这里面就涉及 mysql 的内存管理机制

    内存管理机制简述

    缓冲区中包含这三大类列表。分别为:LRUListFreeListFlushList

    在数据库刚启动时,LRUlist中没有数据页。FreeList存放空闲页。

      当需要读取某个页时,会从FreeList中获取一个空闲页,读入数据后,放入LRUlist中

      如果FreeList中没有空闲页了,那么根据LRU算法淘汰Lru列表中末位的页

      当LRUlist中的页被修改后,页就变成了脏页,这个页也会被加入FlushList中

      注意:这时这个页既在LRUlist中,又在FlushList中。

      总结:LRUList(管理已经被读取的页)和FreeList(管理空闲的页)用来管理页的可用性;FlushList(管理脏页)用来管理脏页的刷新

      在脏页数据同步到磁盘过程中,如果对该磁盘数据页执行 SQL 语句。执行速度就会变慢

      数据修改和读取只依赖缓冲区行不行

      如果数据修改和读取只依赖内存的缓冲区,那么一旦数据库宕机,内存中的数据都会丢失。所以MySQL使用之前讲过的redo log来实现异常重启的数据恢复。

      简单来说,就是在更新缓冲区之前,先写入redo log,保证异常重启之后可以正常恢复缓冲区中的数据。

      为什么脏页一定要刷新

        上面说了 数据只放在缓冲区,会出现数据库宕机,内存数据丢失。所以需要刷新到磁盘。

        redo log如果无限大或者有许多个文件的话,系统中有大量的修改操作,一旦宕机,恢复的时间也会非常长。

        所以自然而然,我们就一定需要把内存中的脏页按照某种规则刷新到磁盘中,有了刷新这个操作,缓冲区的大小问题和redo log的大小问题都可以解决。

          缓冲区不需要无限大了,因为可以持久化到磁盘

          redo log也不需要无限大了,因为一旦持久化到磁盘,redo log中对应的那部分数据就可以释放。

          刷脏页有下面4种场景

          undefined会造成的影响

          如果是 redo log 写满了

          要尽量避免redo log 写满。否则整个系统的更新都会停止。此时写的性能变为 0,必须等待该日志对应脏页同步完成后才能更新,这时就会导致 sql 语句 执行的很慢。


          上一篇:Mysql虚表指的是什么意思
          下一篇:Python如何连接Mysql实现图书借阅系统
          mysql

  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素