MySQL Flush

flush:刷脏页

是什么?

WAL技术提高了更新性能,将数据库随机写转换成顺序写,但内存中的数据页或者redo log中的变更动作始终需要写入磁盘,这就是WAL机制的后续:flush(刷脏页)

什么是脏页?

内存数据页与磁盘数据页内容不一致,称为脏页;反之,内存数据写入磁盘,内存与磁盘的数据页内容一致,称为干净页。

作用

解决WAL技术带来的内存脏页问题。

触发时机

  1. redo log写满了,需要擦除来腾出空间继续写
  2. 内存空间不足,需要淘汰脏页
  3. 系统空闲时
  4. MySQL正常关闭

需要关注前两种所带来的性能问题:

  1. 第一种会导致所有的更新操作堵住,这是不能接受的
  2. 第二种如果一个查询淘汰的脏页个数太多,会导致查询的响应时间明显增加

控制策略

要有效解决上述两个问题,就必须控制好脏页比例,控制刷脏页的速度

在了解InnoDB刷脏页速度前,先来看看一个参数:

  • InnoDB通过参数设置(innodb_io_capacity)来得知磁盘能力

现在,InnoDB知道自己全力刷脏页可以刷多快了,但平时不可能一心一意刷脏页,还需要提供服务,所以会按全力的百分比来刷脏页,这个比例就由控制策略来决定。

速度的计算

控制策略主要参照上述问题的原由:也就是脏页刷慢了会出现什么?

  1. 内存脏页太多
  2. redo log 写满

那策略就围绕 脏页比例 和 redo log写盘速度 这两个因素计算。

首先脏页比例的上限默认是 75%

计算公式比较复杂,总结起来就是:

  • 脏页比例越接近75%,M越大;redo log中写得越满,N越大。
  • M 和 N各自通过计算得到一个100以内的值,取两个中最大那个记为R(R = max[ F1(M),F2(N) ])。

控制策略就是按照 R% * innodb_io_capacity 这个速度来刷脏页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值