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

void master_thread(){
goto loop;
loop:
for (int i=;i<;i++){
thread_sleep() //sleep 1 second-->每秒执行操作(负载在情况下会延迟)
do log buffer flush to disk //重做日志缓冲刷新到磁盘,即使这个事务没有提交(总是)
if ( last_ten_second_ios < % innodb_io_capacity) //如果当前的10次数小于(5% * 200=10)(innodb_io_capacity默认值是200)
do merger % innodb_io_capacity insert buffer //执行10个合并插入缓冲的操作(5% * 200=10)
if ( buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct ) //如果缓冲池中的脏页比例大于innodb_max_dirty_pages_pct(默认是75时)
do buffer pool plush % innodb_io_capacity dirty page //刷新200个脏页到磁盘
else if enable adaptive flush //如果开户了自适应刷新
do buffer pool flush desired amount dirty page //通过判断产生redo log的速度决定最合适的刷新脏页的数量
if ( no user activity ) //如果当前没有用户活动
goto backgroud loop //跳到后台循环
} //每10秒执行的操作
if ( last_ten_second_ios < innodb_io_capacity) //如果过去10内磁盘IO次数小于设置的innodb_io_capacity的值(默认是200)
do buffer pool flush % innodb_io_capacity dirty page //刷新脏页的数量为innodb_io_capacity的值(默认是200)
do merger % innodb_io_capacity insert buffer //合并插入缓冲是innodb_io_capacity的5%(10)(总是)
do log buffer flush to disk //重做日志缓冲刷新到磁盘,即使这个事务没有提交(总是)
do full purge //删除无用的undo页 (总是)
if (buf_get_modified_ratio_pct > %) //如果缓冲池中的胜页比例大于70%
do buffer pool flush % innodb_io_capacity dirty page //刷新200个脏页到磁盘
else
do buffer pool flush % innodb_io_capacity dirty page //否则刷新20个脏页到磁盘
goto loop
backgroud loop: //后台循环
do full purge //删除无用的undo页 (总是)
do merger % innodb_io_capacity insert buffer //合并插入缓冲是innodb_io_capacity的5%(10)(总是)
if not idle: //如果不空闲,就跳回主循环,如果空闲就跳入flush loop
goto loop: //跳到主循环
else:
goto flush loop
flush loop: //刷新循环
do buf_get_modified_ratio_pct pool flush % innodb_io_capacity dirty page //刷新200个脏页到磁盘
if ( buf_get_modified_ratio_pct > innodb_max_dirty_pages_pct ) //如果缓冲池中的脏页比例大于innodb_max_dirty_pages_pct的值(默认75%)
goto flush loop //跳到刷新循环,不断刷新脏页,直到符合条件
goto suspend loop //完成刷新脏页的任务后,跳入suspend loop
suspend loop:
suspend_thread() //master线程挂起,等待事件发生
waiting event
goto loop;
}

MySQL 5.6 InnoDB 存储引擎结构图:

总结:MySQL5.6中InooDB存储引擎无论是性能和功能都比之前版本改善了不少,所以建议大家使用,相当不错的一个版本^.^

想了解更多于InnoDB相关内容,可以参考《MySQL技术内幕  InnoDB存储引擎》 作者姜 承尧的博客:http://insidemysql.sinaapp.com/article/4.html/innodb

作者:陆炫志

出处:xuanzhi的博客 http://www.cnblogs.com/xuanzhi201111

您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

InnoDB master thread工作原理的更多相关文章

  1. innodb master thread 工作原理

    参考 innodb参数汇总  InnoDB的Master Thread工作原理 innodb_max_dirty_pages_pct 默认值 show variables like 'innodb_m ...

  2. InnoDB体系架构(四)Master Thread工作方式

    Master Thread工作方式 在前面的文章:InnoDB体系架构——后台线程 说到:InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成.这篇具体介绍该线程的具 ...

  3. 14.6.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB 主线程IO 速率:

    14.6.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB 主线程IO 速率: 主线程 在InnoDB 是一个线程 执行各种任务在后台. ...

  4. 14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate

    14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate 主的master thread ...

  5. [小结]InnoDB体系结构及工作原理

    参阅:<innodb存储引擎内幕>原创文章,会不定时更新,转发请标明出处:http://www.cnblogs.com/janehoo/p/7717041.html 一.概述: innod ...

  6. InnoDB master thread学习

    很久很久没有写博客了,工作比较忙,也没什么时间学习了,恰逢国庆放假,安心的学习一下,其实只是把之前学习过的知识再温习了一下而已.InnoDB 有众多的线程,其中非常核心的就是master thread ...

  7. InnoDB Master Thread I/O Rate详解

    一.innodb 在刷盘时要面对的问题: 1.对于innodb 的master thread 这个线程来说,它会在后台执行许多的任务,这些任务大多数都是与IO操作相关的, 比如“刷新脏页到磁盘”.“合 ...

  8. Nginx源码分析:3张图看懂启动及进程工作原理

    编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在高可用架构群分享.转载请注明来自高可用架构公众号「ArchNotes」.   导读:很多工程师及架构师都希望了解及掌握高性能服务器 ...

  9. msyql master thread

    ------------------------------------------------------ 2015-02-10----------------------------------- ...

随机推荐

  1. 通过.json()将服务器返回的字符串转换成字典

  2. [代码]--ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误

    今天在oracle中执行插入语句的时候报了一个奇怪的错误,在程序中报的错误是ORA-01745: 无效的主机/绑定变量名,网上一查说是缺失逗号,在查询分析器执行的时候报缺失的逗号,仔细看了一下也没有缺 ...

  3. Rain on your Parade HDU - 2389 (hc板题)

    在客人能够拿到的伞与客人之间建边  跑hc就好了.... 看看别人的:https://blog.csdn.net/wall_f/article/details/8248350 #include < ...

  4. poj 2482 Stars in Your Window + 51Nod1208(扫描线+离散化+线段树)

    Stars in Your Window Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13196   Accepted:  ...

  5. Ansible批量在远程主机执行命令

    Ansible直接执行远程命令,不用ssh登陆交互执行. 如下: ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u ...

  6. 前端学习 -- Css -- 盒子模式

    框模型: CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里. 为什么要想象成盒子呢?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子.我们只需要将相应的盒子摆放到网页 ...

  7. 样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n)

    样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n) 正态分布的n阶中心矩参见: http://www.doc88.com/p-334742692198.html

  8. Docker 镜像加速器

      Docker 镜像加速器 我们使用Docker的第一步,应该是获取一个官方的镜像,例如mysql.wordpress,基于这些基础镜像我们可以开发自己个性化的应用.我们可以使用Docker命令行工 ...

  9. linux课程总结

    linux课程总结 --20125111 李冰清 转眼间,为期十六周的linux课程已进入尾声,回想起这十六周的课程,不断浮现在脑海里的是娄老师的笑容以及这十六周以来的点点滴滴. 第一次听到娄老师说将 ...

  10. JavaScript模拟QQ签名(HTML5 contenteditable属性)

    例图: 一.思路 1.单击元素时,使元素可以编辑,并获得焦点 2.按下键盘检测用户编辑元素中的文本 3.监听按下Enter键操作或离开可编辑元素焦点时,更新数据库 二.代码 $(function(){ ...