博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InnoDB Master Thread I/O Rate详解
阅读量:6654 次
发布时间:2019-06-25

本文共 1009 字,大约阅读时间需要 3 分钟。

一、innodb 在刷盘时要面对的问题:

  1、对于innodb 的master thread 这个线程来说,它会在后台执行许多的任务,这些任务大多数都是与IO操作相关的,

  比如“刷新脏页到磁盘”、“合并插入缓存到二级索引”、master thread 不只是要完成这些工作,而且还要考虑到对

  性能的影响,力求完成这些工作的同时也不怎么影响性能;

 

  2、上面说的还是比较抽象的,还是来个例子。假设磁盘每秒只能完成100个IO请求,业务逻辑每秒有60个事务,从少的

  算假设60个事务的日志刷新对应着60个写请求,如果这个一秒内master thread 发起80个IO请求;也就是说一秒内

  磁盘只能处理100个请求,而mysql总共发起了140个;那么就有40个请求要再下一秒才能完成,如果每一秒都发起140

  个请求的话,最终mysql还是会卡死的,因为它根本忙不过来。

 

  3、好现在,再回过头来看一下master thread 干的什么事、由上面说的内容可以知道master thread 就是刷新innodb buffer pool

  中的数据;再思考一个问题,一个事务怎么才算完成?答案是只要日志(redo,undo)写入了磁盘就算完成了;事实上数据等到

  空闲的时候再刷新到磁盘也是可以的。

 

  4、好回到2中提到的问题,问题的本质是硬件性能跟不上,而innodb 并不知道硬件性能这么low,发起了过多的IO请求,使得

  它出了问题。

 

二、怎么解决问题

  由一.4可以知道解决问题的关键是innodb 不知道磁盘的IOPS是有多大,解决方法也就非常的简单了,我们告诉它就行了呀!我们

  告诉它的方式就是通过配置嘛!

[mysqld]innodb_io_capacity=200

  比较说这这里告诉innodb磁盘每秒大概可能处理200IO请求。

 

三、对于innodb_io_capacity 的参考:

  说句大实话,一般的笔记本电脑上的5400转的盘,一秒也就60来个IOPS,经历表示innodb_io_capacity这个200的默认值,

  通常来说这个参数不会成为约束mysql性能的参数。

 

----

交流学习&打赏

-----------------------------------------------------------------------

转载地址:http://pmtto.baihongyu.com/

你可能感兴趣的文章
使用Hystrix守护应用(3)
查看>>
mysql数据库show processlist查看当前连接数及状态,show status查看所有状态
查看>>
我的友情链接
查看>>
收集了一些linux的命令
查看>>
python3 django-admin 添加业务模块,多字段搜索
查看>>
unity的shader
查看>>
不要在函数离开临界区之前返回
查看>>
android 命令
查看>>
Centos7 Ldap统一认证部署
查看>>
Symantec AntiVirus企业版部分客户端无法更新
查看>>
oracle 使用 UTL_FILE 导出表数据到txt文件
查看>>
一个关于编码的实验(C#写的记事本文档,在Linux下用C++读取)
查看>>
poj3080(串-KMP+枚举)
查看>>
MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME() ...
查看>>
Android运行时出现的 java.lang.VerifyError 异常解决方案
查看>>
正则表达式测试工具
查看>>
centos安装 7zip
查看>>
关于无线由器限速的问题
查看>>
"101"比"1203"大的时候.java中的比较办法和Oracle中的比较办法!!
查看>>
马云经典语录--你最喜欢哪一句
查看>>