mysql之抖动

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-04-08 12:08 被阅读0次

flush: 就是把内存里的数据写入磁盘的过程。
脏页:当内存数据页跟磁盘数据页内容不一致的时候。
干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容一致的时候。
脏页和干净页都是在内存中。

1、数据库的flush场景

  • 对应的redo log日志满了,系统会停止所有更新操作,把checkpoint往前推进,redo log日志留出空间继续写。
  • 对应的系统内存不足,当需要新的内存页,而内存不够用的时候,就要淘汰一些数据页,空出内存给别的数据页使用。如果淘汰的是脏页,就要先将脏页写到磁盘。InnoDB用缓冲池(buffer pool)管理内存,缓冲池中的内存页有3种状态:
    1、还没有使用的
    2、使用了并且是干净页
    3、使用了并且是脏页
  • mysql系统空闲的时候,刷一点脏页。
  • mysql正常关闭的时候,mysql会把内存的脏页都flush到磁盘上。

2、InnoDB刷脏页的控制策略

innodb_io_capacity <75%进行参数设置,可以设置InnoDB刷脏页的控制策略。
根据上述算得的 F1(M) 和 F2(N) 两个值,取其中较大的值记为 R,之后引擎就可以按照 innodb_io_capacity 定义的能力乘以 R% 来控制刷脏页的速度。
脏页比例:Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total
mysql> select VARIABLE_VALUE into @a from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_dirty'; select VARIABLE_VALUE into @b from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_total'; select @a/@b;

InnoDB刷脏页速度策略:


InnoDB刷脏页速度策略

测试磁盘随机读写的命令:fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest
redo log状态图:

redo log状态图

更新和flush过程:


image.png

相关文章

  • mysql之抖动

    flush: 就是把内存里的数据写入磁盘的过程。脏页:当内存数据页跟磁盘数据页内容不一致的时候。干净页:内存数据写...

  • mysql常用命令书目录

    mysql常用命令之连接MYSQL mysql常用命令之修改密码 mysql常用命令之增加新用户 mysql常用命...

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • MySQL学习笔记一之MySQL语法

    title: MySQL学习笔记一之MySQL语法tags: MySQL 数据库categories: MySQL...

  • 脏页数据落地导致Mysql抖动

    线上出现SQL时延大幅上涨,拿到监控数据,未能准确知道原因。 一、监控数据1、外部流量无上涨,SQL时延上涨100...

  • IOS之设置图片抖动

    //图片抖动-(void)myCodeBtnClick{ CABasicAnimation * shake = ...

  • golang mysql事务

    Golang之Mysql事务

  • 抖动

    生活, 在不经意间抖动, 有些颠簸, 有些浮动, 内心有些不安定, 回头望去, 一切不见踪影, 遇见, 是最美的风...

  • 抖动

    不觉又和朋友z通话差不多一个钟。她和刚出生5天的小宝一直还没能见面,唯一的一次就是刚出生时那一瞥。小宝在她印象中就...

  • Oracle与MySQL字段类型对照

    日期类型说明 ORACLE: MYSQL: mysql 之 DATE、DATETIME、TIMESTAMP支持范围...

网友评论

    本文标题:mysql之抖动

    本文链接:https://www.haomeiwen.com/subject/xpbesrtx.html