MySQL:刷脏页
1. 脏页,干净页
当内存数据页和磁盘数据页上的内容不一致时,我们称这个内存页为脏页;
内存数据写入磁盘后,内存页上的数据和磁盘页上的数据就一致了,我们称这个内存页为干净页。
2. 刷脏页的时机
2.1 redo log
redo log 是循环写的,当redo log 写满了,即 write pos 追上了 checkpoint 时,此时没有空间记录 redo log,就需要将 checkpoint 向前推进,推进的这部分日志对应的脏页就需要刷入磁盘。
此时所有的更新全部阻塞,此时写性能跌为0,必须等待刷一部分脏页后才能继续更新,这种情况要尽量避免;
2.2 系统内存
当系统内存不足时,就需要将一部分数据页淘汰掉,如果淘汰的是脏页,就需要先将脏页刷入磁盘。
当淘汰的脏页过多时,会导致查询的响应时间变长;
2.3 MySQL认为空闲的时间
不存在性能问题;
2.4 MySQL正常关闭之前,会把内存中所有的脏页刷入磁盘
不存在性能问题;
3. 刷脏页的控制策略
3.1 正确服务器的IO能力
innodb_io_capacity参数表示机器的磁盘能力,根据机器能力合理设置该参数的值;
3.2 刷脏页的速度
InnoDB的刷盘速度主要参考两个参数:脏页比例和redo log 的写盘速度;
innodb_max_dirty_pages_pct是脏页比例上限,默认值为75%;
InnoDB根据当前的脏页比例算出一个值M1;
InnoDB每次写入redo log 有一个序号,根据当前序号和checkpoint之间的差值算出一个值M2;
之后引擎取M1和M2之间(M1和M2都是0-100之间的数)的较大值除以100乘以innodb_io_capacity,这就是刷脏页的速度;
3.3 刷脏页机制
当一个查询请求执行过程中需要先flush一个脏页时,如果脏页的旁边也是脏页,此时引擎会将相邻的脏页也刷掉,直到下一个数据页不是脏页为止;
该机制通过参数 innodb_innodb_flush_neighbors 控制,值为0时表示只刷自己,值为1时则有连坐效果;
MySQL:刷脏页的更多相关文章
- 【MySQL 读书笔记】SQL 刷脏页可能造成数据库抖动
开始今天读书笔记之前我觉得需要回顾一下当我们在更新一条数据的时候做了什么. 因为 WAL 技术的存在,所以当我们执行一条更新语句的时候是先写日志,后写磁盘的.当我们在内存中写入了 redolog 之后 ...
- Mysql的刷脏页问题
平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短. 当内存数据 ...
- Innodb刷脏页技术深度挖掘
DBA某数据库集群每日17:00左右会出现一个性能陡降的现象,在10~20秒内主库出现大量慢查询.这些查询本身没有性能问题,也没有任何关联,可以认为是由于数据库系统负载较重,由于并发导致的慢查询.通过 ...
- InnoDB Redo Flush及脏页刷新机制深入分析
概要: 我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页.既然有重做日志保证数据持久性,查询时也可以直接从缓 ...
- MySQL中InnoDB脏页刷新机制Checkpoint
我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页.既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中 ...
- 面试题:了解MySQL的Flush-List吗?顺便说一下脏页的落盘机制!(文末送书)
Hi,大家好!我是白日梦! 今天我要跟你分享的MySQL话题是:"了解Flush-List吗?顺便说一下脏页的落盘机制!(文末送书)" 本文是MySQL专题的第 8 篇,共110篇 ...
- MySQL中读页缓冲区buffer pool
Buffer pool 我们都知道我们读取页面是需要将其从磁盘中读到内存中,然后等待CPU对数据进行处理.我们直到从磁盘中读取数据到内存的过程是十分慢的,所以我们读取的页面需要将其缓存起来,所以MyS ...
- redis存在大量脏页问题的追查记录
from:https://www.zybuluo.com/SailorXiao/note/136014 case现场 线上发现一台机器内存负载很重,top后发现一个redis进程占了大量的内存,TOP ...
- Checkpoint--查看各DB上的脏页
可以使用sys.dm_os_buffer_descriptors来看数据页在buffer pool中的状态,其中is_modified来标示数据页是否为脏页 --------------------- ...
随机推荐
- 201771010134杨其菊《面向对象程序设计java》第十周学习总结
第8章泛型程序设计学习总结 第一部分:理论知识 主要内容: 什么是泛型程序设计 泛型类的声明及实例化的方法 泛型方法的定义 ...
- powershell复制文件夹的文件
function CCopy($folder_a_path,$folder_b_path){ #遍历源文件夹下所有文件 $folders_a = gci $folder_a_path -Recurse ...
- 字符串API练习三则
(1)按照Ascii码字典的顺序排列字符串.核心API:int compareTo(String),若大于则返回1,小于返回-1,等于返回0. class StringArray { static v ...
- RPA基础
RPA是什么 软件机器人 RPA是基于计算机操作系统的工作界面,自动识别UI,完成预先设定的工作流程的软件机器人 全自动 自动的操作整个工作流程,用软件的方式代替人力,完成大量的重复性的手工操作, ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- Linux---一级/二级目录以及位置目录名/指令
home目录:普通用户登录进来以后的初始位置(会在home目录下创建一个登录名相同的目录例如 / home / 用户名),如果是超级用户则就是 在根目录 /下的 root目录(也就是 /root) ...
- Codeforces 845 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意:2n2n2n个人下棋,分为两个阵营,每个阵营nnn个人,每个人有一个积分,积分高的能赢积分低的,问如果你可以随意选人,然 ...
- vb.net WIN32API 获取listview的值
Public Class Form1 Public Const LVM_FIRST As Short = &H1000S Public Const LVM_GETITEMCOUNT As In ...
- (PMP)第4章-----项目整合管理
4.1 制定项目章程 输入 工具与技术 输出 1.商业文件 (商业论证,效益管理计划) 1.专家判断 1.项目章程 2.协议 2.数据收集 (头脑风暴,焦点小组,访谈) 2.假设日志 3.事业环境因素 ...
- 关于Data URI
[新增]:http://www.webhek.com/post/data-url.html 引子:在研究FileReader时,有个方法readAsDataURL;然后看到打印出来的东西类似于如下:[ ...