一、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性能的参数。

----

交流学习&打赏

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

转载于:https://www.cnblogs.com/JiangLe/p/7519361.html

InnoDB Master Thread I/O Rate详解相关推荐

  1. InnoDB master thread工作原理

    我们简单交流下InnoDB master thread学习,有兴趣的朋友可以参考<<MySQL技术内蒙--InnoDB存储引擎第二版>> void master_thread( ...

  2. Java Thread的interrupt方法详解

    Java Thread的interrupt方法详解 一.概述 interrupt方法的目的是给线程发出中断信号,但是不保证线程真的会中断 中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应 ...

  3. MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别

    文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...

  4. mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解

    前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...

  5. java的thread类_thread 类详解

    java.lang.Thread类详解 一.前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前 ...

  6. saltStack运维工具的部署及master迁移实现的过程详解

    服务器端:192.168.3.87 客户端:192.168.3.86.192.168.3.108 1.salt服务器端安装 192.168.3.87 rpm -Uvh http://mirrors.y ...

  7. mysql中engine=innodb和engine=myisam的区别详解

    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...

  8. Thread 与Runnable区别详解

    //使用Thread实现线程不能实现资源共享 class MyThread extends Thread { private int ticket=5; private String name; pu ...

  9. python:threading.Thread类的使用详解

    参考: https://blog.csdn.net/drdairen/article/details/60962439 http://www.cnblogs.com/429512065qhq/p/87 ...

最新文章

  1. Request.From,Request.QueryString转对象
  2. idea 开发 maven 项目
  3. UVM基础之------uvm_port_base
  4. 《交互式程序设计 第2版》一3.5 捕获简单用户交互行为
  5. 开源是项“全民工程”,揭秘开源团队的管理运作
  6. 实例17:python
  7. 局域网网络风暴检测工具_【思唯网络学院】从原理到配置,最全的VLAN说明就在这了!...
  8. vue 学习笔记—路由篇
  9. 【转载】 MySQL之用户资源限制
  10. excel组合汇总_Excel汇总20150112
  11. 安装黑苹果目前最详细教程
  12. android logo制作教程视频,Android的APP怎样制作LOGO的尺寸
  13. mac格式化系统恢复|mac格式化后怎么恢复?
  14. bootcmd执行过程
  15. 如何学习一门计算机语言
  16. Google操作系统基于Chrome?!
  17. 读书笔记:《眨眼之间》
  18. python迭代器和生成器的作用_python迭代器与生成器的详细介绍
  19. 漫谈IA32的系统管理模式(SMM)以及IA32的四种CPU模式
  20. org.quartz.JobPersistenceException: Couldn‘t store trigger ‘DEFAULT.MT_vqhsgkj1lrr8‘ for ‘?,?‘

热门文章

  1. 团队-手机便签-开发文档
  2. 聚集索引和非聚集索引实例
  3. pickle模块介绍
  4. Karrigell介绍
  5. Convert.ToInt32
  6. Yii2 事件学习笔记
  7. Ubuntu17.04安装WineQQ7.8及微信
  8. 程序员如何快速准备面试中的算法 - 结构之法
  9. 【问题收集·中级】关于XMPP使用Base传送图片
  10. C# webbrowser控件点击页面按钮