tamako tamako
首页
  • Mysql
  • Redis
  • JVM
  • 个人开源项目 (opens new window)
  • 开源官网 (opens new window)
  • B站主页 (opens new window)
  • 摄影
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

tamako | 玉子

胜人者有力,自胜者强
首页
  • Mysql
  • Redis
  • JVM
  • 个人开源项目 (opens new window)
  • 开源官网 (opens new window)
  • B站主页 (opens new window)
  • 摄影
  • 网站
  • 资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 锁

  • 数据库事务

  • 日志

    • Mysql脏页刷盘
      • 什么是脏页,为什么刷盘,与redo有什么关系
      • 脏页刷盘的四种情况
      • 脏页刷盘的影响
      • 思考
  • Mysql
  • 日志
pruedream
2023-12-11
目录

Mysql脏页刷盘

# 什么是脏页,为什么刷盘,与redo有什么关系

当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 刷盘的目的在于将内存上的数据进行持久化,因为内存上的数据是不安全的,当出现系统宕机的时候,就会造成数据的丢失。

Mysql采用的是先写日志再写磁盘的方式来进行数据的持久化,而此处的写磁盘指的就是脏页的刷新。

# 脏页刷盘的四种情况

1.当 redo log 写满,mysql就会暂停所有更新操作,将同步这部分日志对应的脏页同步到磁盘。

2.系统内存不足时,需要淘汰一部分数据页,如果淘汰的是脏页,就要先将脏页同步到磁盘。

3.MySQL 认为系统空闲的时候,有机会就同步内存数据到磁盘,这种没有性能问题。

4.MySQL 正常关闭,MySQL 会把内存的脏页都同步到磁盘上,这样下次 MySQL 启动的时候,就可以直接从磁盘上读数据,启动速度会很快。这种没有性能问题。

# 脏页刷盘的影响

  1. 一个查询要淘汰的脏页个数太多,会导致查询的响应时间明显变长。 内存不足
  2. 日志写满,更新全部堵住,写性能跌为 0,这种情况对敏感业务来说,是不能接受的 。 redo log 写满

1和2会造成影响,3和4是不会对系统造成太大问题。



# 思考

了解脏页刷新机制以及相应的参数是很有必要的,当数据库系统某些性能问题时,要考虑是否是脏页刷新相关的配置参数不合理导致的。根据实际业务,考虑缓冲区的大小,redo log的大小,最少空闲页,脏页比例,io吞吐量相关参数是否配置合理,根据优化相关参数,解决系统问题。

参考

  • https://www.cnblogs.com/ging/p/13467898.html
  • https://www.modb.pro/db/71045
  • https://time.geekbang.org/column/article/71806
#Mysql
上次更新: 2024/08/09, 16:07:34
InnoDB RR隔离级别下解决幻读

← InnoDB RR隔离级别下解决幻读

最近更新
01
骄惰怯
08-10
02
谦虚谦虚谦虚
08-09
03
长期主义
07-17
更多文章>
Theme by Vdoing | Copyright © 2019-2024 tamako | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式