开始今天读书笔记之前我觉得需要回顾一下当我们在更新一条数据的时候做了什么。

因为 WAL 技术的存在,所以当我们执行一条更新语句的时候是先写日志,后写磁盘的。当我们在内存中写入了 redolog 之后,就返回已经更新成功了。后续通过其他的手段将数据写回到磁盘上。

当内存数据也跟磁盘数据页不一致的时候,我们就称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。

有几种场景会让 MySQL 主动将 redo log 里面的记录刷到实际的数据更新上面。

1. ib_logfile0写的记录满了。

2. 系统内存不足,读取数据的时候内存不够必须要空出内存给数据页使用,所以需要将脏页刷到磁盘上把空间释放出来。

3. 系统空闲,每隔一段时间就刷一批脏页。

Innodb 使用 buffer pool 来管理内存,很多地方的优化都跟 buffer pool 有直接的关系。该参数默认设置是 128M 如果内存资源充足建议开到 4G 以上。这样不管是提升缓存能力,还是帮助数据排序都有非常大的帮助。

有几个跟脏页相关的系统参数,innodb_io_capacity 这个参数会告诉 InnoDB 磁盘读写能力,一般会设置成磁盘的 IOPS 默认是 200 innodb_io_capacity_max 是 2000。按照工具测试来看目前 aliyun 的云盘可以达到 4000 以上的 iops 。我看阿里云自己的 rds 配置的也是 2000 最大 4000.这样可以充分发挥硬盘读写的威力。

这里笔者推荐了 fio 工具用来测试磁盘读写能力。

 fio -filename=$filename -direct= -iodepth  -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs= -runtime= -group_reporting -name=mytest 

另外 innodb_max_dirty_pages_pct 用于限制脏页上限,默认是 75%.还有 innodb_flush_neighbors 8.0 之前是 on, 在刷脏页的同时如果旁边数据也也是脏页会一并刷入。

其实排查 MySQL 抖动是比较难的一件事情,最好综合慢查日志分析相关参数和磁盘问题来定位,才能更好的解决此类问题。

Reference:

本读书笔记皆来自发布在极客时间的 林晓斌(丁奇)的 MySQL 实战45讲:

极客时间版权所有: https://time.geekbang.org/ 版权所有:

https://time.geekbang.org/column/article/71806

https://segmentfault.com/a/1190000003880571  使用fio测试磁盘I/O性能

最新文章

  1. 【异常】ORA-01536: space quota exceeded for tablespace
  2. R in bioinformatic
  3. 被FBI点名的中国黑客-Lion
  4. Java之路 ——初识Eclipse
  5. swift3.0 基础练习-实现99乘法表
  6. 201521123017 《Java程序设计》第14周学习总结
  7. 机顶盒webview开发调试
  8. Jquery on方法绑定事件后执行多次
  9. 伪分布式安装core-site.xml和hdfs-site.xml配置文件
  10. 自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>
  11. mysql常用修改创建语句
  12. Linux 修改root密码(忘记密码后)
  13. EditPlus 4.3.2502 中文版已经发布(12月5日更新)
  14. HTML简单登录和注册页面及input标签诠释
  15. 团队作业7——第二次项目冲刺(Beta版本12.04——12.07)
  16. mysql触发器使用方法具体解释
  17. "errmsg" : "distinct too big, 16mb cap",
  18. Python2获取网页标题
  19. 【bzoj3730】震波 动态点分治+线段树
  20. 在ASP.Net和IIS中删除不必要的HTTP响应头[转]

热门文章

  1. ES 06 - 通过Kibana插件增删改查ES中的索引文档
  2. Java 中的几种线程池,你之前用对了吗
  3. ADO.NET学习(一)
  4. Linux高级运维 第四章 文件的基本管理和XFS文件系统备份恢复
  5. Mysql 的 create as 和create like 区别
  6. Spring 中 IoC 容器简介
  7. jsp内置对象-application对象
  8. Snapde和常用的CSV文件编辑器对比
  9. Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
  10. 64位Win7下Asp.net项目连接Oracle时报ORA-6413:连线未打开异常