InnoDB Master Thread I/O Rate详解
一、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详解相关推荐
- InnoDB master thread工作原理
我们简单交流下InnoDB master thread学习,有兴趣的朋友可以参考<<MySQL技术内蒙--InnoDB存储引擎第二版>> void master_thread( ...
- Java Thread的interrupt方法详解
Java Thread的interrupt方法详解 一.概述 interrupt方法的目的是给线程发出中断信号,但是不保证线程真的会中断 中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应 ...
- MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别
文章目录 MySQL存储引擎InnoDB.MyISAM和MEMORY介绍详解和区别 InnoDB存储引擎 特点 操作示例 创建InnoDB表 修改表引擎为InnoDB MyISAM存储引擎 特点 操作 ...
- mysql innodb事务中_MySQL InnoDB如何保证事务特性示例详解
前言 如果有人问你"数据库事务有哪些特性"?你可能会很快回答出原子性.一致性.隔离性.持久性即ACID特性.那么你知道InnoDB如何保证这些事务特性的吗?如果知道的话这篇文章就可 ...
- java的thread类_thread 类详解
java.lang.Thread类详解 一.前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前 ...
- 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 ...
- mysql中engine=innodb和engine=myisam的区别详解
最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...
- Thread 与Runnable区别详解
//使用Thread实现线程不能实现资源共享 class MyThread extends Thread { private int ticket=5; private String name; pu ...
- python:threading.Thread类的使用详解
参考: https://blog.csdn.net/drdairen/article/details/60962439 http://www.cnblogs.com/429512065qhq/p/87 ...
最新文章
- Request.From,Request.QueryString转对象
- idea 开发 maven 项目
- UVM基础之------uvm_port_base
- 《交互式程序设计 第2版》一3.5 捕获简单用户交互行为
- 开源是项“全民工程”,揭秘开源团队的管理运作
- 实例17:python
- 局域网网络风暴检测工具_【思唯网络学院】从原理到配置,最全的VLAN说明就在这了!...
- vue 学习笔记—路由篇
- 【转载】 MySQL之用户资源限制
- excel组合汇总_Excel汇总20150112
- 安装黑苹果目前最详细教程
- android logo制作教程视频,Android的APP怎样制作LOGO的尺寸
- mac格式化系统恢复|mac格式化后怎么恢复?
- bootcmd执行过程
- 如何学习一门计算机语言
- Google操作系统基于Chrome?!
- 读书笔记:《眨眼之间》
- python迭代器和生成器的作用_python迭代器与生成器的详细介绍
- 漫谈IA32的系统管理模式(SMM)以及IA32的四种CPU模式
- org.quartz.JobPersistenceException: Couldn‘t store trigger ‘DEFAULT.MT_vqhsgkj1lrr8‘ for ‘?,?‘