mysql脏页是什么


Posted in MySQL onJuly 26, 2021

脏页(内存页)

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

为什么会出现 脏页

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

内存管理机制简述

缓冲区中包含这三大类列表。分别为:LRUList、FreeList、FlushList。
在数据库刚启动时,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种场景

  • 当 redo log 写满,mysql就会暂停所有更新操作,将同步这部分日志对应的脏页同步到磁盘。
  • 系统内存不足时,需要淘汰一部分数据页,如果淘汰的是脏页,就要先将脏页同步到磁盘。
  • MySQL 认为系统空闲的时候,有机会就同步内存数据到磁盘,这种没有性能问题。
  • MySQL 正常关闭,MySQL 会把内存的脏页都同步到磁盘上,这样下次 MySQL 启动的时候,就可以直接从磁盘上读数据,启动速度会很快。这种没有性能问题。

会造成的影响

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

 到此这篇关于mysql脏页是什么的文章就介绍到这了,更多相关mysql脏页内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
mysql外连接与内连接查询的不同之处
Jun 03 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
mysql 体系结构和存储引擎介绍
May 06 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 #MySQL
MySQL深度分页(千万级数据量如何快速分页)
ORM模型框架操作mysql数据库的方法
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
You might like
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
简析Python的闭包和装饰器
2016/02/26 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
销售经理工作职责
2014/02/03 职场文书
食品流通安全承诺书
2014/05/22 职场文书
酒店开业策划方案
2014/06/02 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
旷工检讨书1000字
2015/01/01 职场文书
英语演讲开场白
2015/05/29 职场文书