欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

mysql脏页是什么? 有大用

  1. mysql脏页:
    当内存数据页和磁盘数据页上的内容不一致时,我们称这个内存页为脏页;
    内存数据写入磁盘后,内存页上的数据和磁盘页上的数据就一致了,我们称这个内存页为干净页。

  2. 刷脏页的时机:
    (1)redo log写满时,没有看见了,此时需要将checkpoint向前推进,推进的这部分日志对应的脏页刷入到磁盘,此时所有的更新全部阻塞,此时写的性能变为0,必须待刷一部分脏页后才能更新。
    (2)系统内存不足时,需要将一部分数据页淘汰掉,如果淘汰的是脏页,需要先将脏页同步到磁盘。
    (3)MySQL认为空闲的时间,这种没有性能问题。
    (4) mysql正常关闭之前,会把所有脏页刷入磁盘,不存在性能问题。

来自 https://www.jianshu.com/p/6ffb01aa7717



mysql脏页是什么

1. 脏页(内存页)

当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。

内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。

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

一条 SQL 语句,正常执行的时候特别快,偶尔很慢。那这时候可能就是在将脏页同步到磁盘中了

2. 什么时候会引起将脏页同步到磁盘中?

(1) 当 redo log写满了。这时候系统就会停止所有的更新操作,将更新的这部分日志对应的脏页同步到磁盘中,此时所有的更新全部停

止,此时写的性能变为0,必须待刷一部分脏页后才能更新,这时就会导致 sql语句 执行的很慢。

(2) 也可能是系统内存不足时,需要将一部分数据页淘汰掉,如果淘汰的是脏页,则需要先将脏页同步到磁盘,空出来的给别的数据页使用。

(3) MySQL 认为系统“空闲”的时候,反正闲着也是闲着反正有机会就同步到磁盘一些数据

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

3.会造成的影响

1 如果是redo log写满了

尽量要避免的。因为出现这种情况的时候,整个系统就不能再接受更新了,所有的更新都都会停止。此时写的性能变为0,必须待刷一部分脏页后才能更新,这时就会导致 sql语句 执行的很慢

2 内存不够用了

常态,很正常。

发布于 2020-07-04

来自 https://zhuanlan.zhihu.com/p/155799967


普通分类: