一 简介:今天来聊聊具体的线程和IO

二 具体线程与作用

1 master thread    mysql的主要工作触发线程

1 redo and binlog日志

2 合并插入缓冲。

3 脏页的刷新

4 undo页回收

5 产生一个ckp点

2 IO THREAD       处理AIO模式的回调部分

具体说明 AIO模式, 就是后台处理逻辑,然后先返回状态给前台,等后台处理完成,会调用回调函数进行二次操作,也就是数据库做完异步刷新,再调用以下进程

insert buffer thread->insert buffer merges插入缓冲线程 1个

log thread -> asynchronous log flushes 日志线程 1个

read thread -> read-ahead负责数据块的读取) 读线程 4个

write thread -> flushing of dirty buffers(负责数据库的写入) 写线程 4个

3  purge thread 最新版本默认4个

1  undo段的回收 2 对delete标记数据进行清除

1  可以通过 innodb_purge_thread 调节参数 加快对undo段的回收 默认是1,OLTP业务通常调节为4

4  page clean thread

1  脏页清理线程

1  默认启用一个线程,5,7支持多线程刷脏

2  默认参数 innodb_page_cleaners  默认是1;最大可以是64,也就是会有64个page cleaner线程

3   判断参数本身是否合适

Innodb_buffer_pool_wait_free  等待值

如果值很大,则需要增加innodb_page_cleaners值,同时增加写线程(innodb_write_io_thread)

三 名词解析

1 IO操作三要素 read / write/ sync

2 同步IO 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行  例如redo的刷新,负责线程 master thread

异步IO   异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。 如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率 (缩写 aio) 例如脏页的刷新,负责线程 io thread

请记住

1 master thread和 io thread是独立的,并非相互干涉

2 mysql利用AIO的方式大大提高了处理效率,也是真正工作的,这里要牢记

3 page_cleaner_thread  和 purge thread的出现目标是减轻mater thread的负担

四 总结

1   mater thread负责主要工作,purge thread 和page cleaner分别负责undo和脏页的相关工作,整体的后期处理由io_thread完成

从分类角度上看 有部分同步IO工作 有部分异步IO工作

2 在起先的版本中 mysql通过源代码模拟AIO的工作,在最新的版本中.mysql已经依赖linux内核进行AIO操作,参数是innodb_use_native_aio(默认开启)  编译需要依赖 libaio。AIO的相关线程就是io thread部分,上面第二部分

mysql io线程 原理_mysql 原理 ~ 线程与IO相关推荐

  1. mysql auto_increment 原理_mysql原理之Auto_increment

    引言 MySQL中auto_increment字段估计大家都经常用到,特别是innodb引擎.我也经常用,只知道mysql可以保证这个字段在多进程操作时的原子性,具体原理又是什么,后来查阅了MySQL ...

  2. mysql字符集排序规则_MySQL原理 - 字符集与排序规则

    任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...

  3. Java线程池实现原理及其在美团业务中的实践

    来自:美团技术团队 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池ThreadPoolExecuto ...

  4. mysql 半同步复制_Mysql半同步复制原理及问题排查

    mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...

  5. mysql数据库复制基本原理_MySQL的复制原理以及流程

    原创文章出自公众号:「码农富哥」,如需转载请注明出处! 文章如果对你有收获,可以收藏转发,这会给我一个大大鼓励哟!另外可以关注我公众号「码农富哥」 (搜索id:coder2025),我会持续输出Pyt ...

  6. mysql主从同步原理_mysql主从同步以及原理

    mysql主从复制介绍 当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步. 实时和异步: 同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,My ...

  7. mysql数据库主从同步的原理_mysql数据库主从同步复制原理

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...

  8. 【有料】Java线程池实现原理及其在美团业务中的实践

    随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员 ...

  9. 深入浅出吃透多线程、线程池核心原理及代码详解

    一.多线程详解 1.什么是线程 线程是一个操作系统概念.操作系统负责这个线程的创建.挂起.运行.阻塞和终结操作.而操作系统创建线程.切换线程状态.终结线程都要进行CPU调度--这是一个耗费时间和系统资 ...

  10. Java线程池实现原理及其在美团业务中的实践(转载加总结)

    我们知道线程有5种状态分别是新建,就绪,运行,阻塞,死亡,而对应的线程池也有5种状态RUNNING运行,线程池创建就是该状态,SHUTDOWN 不接受新任务,但是处理已存在的任务,STOP不接受新任务 ...

最新文章

  1. Spring MVC 学习笔记 对locale和theme的支持
  2. 指针也是一种数据类型
  3. (转)类库 框架 模式
  4. 在新加坡做面试官的经历 (Interviewer Experience for UI/UX Designer in Singapore)
  5. php作业案例10,5月23日作业——实例演示查询构造器中的10个最常用的方法
  6. 信号处理:希尔伯特黄变换
  7. CCIE-LAB-第五篇-SDN-SD-WAN-BGP-OMP(sdwan版的路由协议)
  8. mysql 中常用的基本操作
  9. ConcurrentProgramming:volatile/构造方法溢出/禁止重排序
  10. Atitit 项目源码管理 attilax著 1. 源码结构sdk目录结构 1 1.1. 源码分类,配置文件,主程序文件,sql文件 1 2. 源码管理,提交,更新,与同步 1 2.1. 源码同步
  11. 2019年数据库系统工程师上午真题及答案解析
  12. 3 Java学习之 IO
  13. xgboost early_stop_rounds是如何生效的?
  14. 怎么用计算机名看地址吗,知道计算机名 肿么查ip
  15. 音频编码之opus(一)
  16. linux系统下的打印机驱动下载,方法论:Linux下如何驱动主流品牌打印机
  17. 蓝绿配色个人岗位竞聘PPT模板
  18. 国内外经典开源数据大全!
  19. ECShop开源商城与COS互通:降低本地存储负载、提升访问体验
  20. 转娃哈哈能不能简单些?

热门文章

  1. 【数字信号】基于matlab GUI手机拨号音效模拟【含Matlab源码 909期】
  2. 【语音合成】基于matlab比例重叠相加法信号分帧与还原【含Matlab源码 561期】
  3. 机器学习 声音 分角色_机器学习对儿童电视节目角色的痴迷
  4. conda可以更改环境的python anaconda替换环境的Python
  5. PyTorch1.4安装(Anaconda3 + Python3.6 + cpu版本)
  6. 随笔记---python ctrl + 移动光标到所用库报错:无法找到要转到的声明
  7. linux centos7 配置ftp,Linux Centos7配置ftp服务器
  8. sql统计各科成绩大于平均分的人_SQL第三关:汇总分析
  9. 第一章计算机基础知识作业答案,计算机基础作业题1答案
  10. @autowired注解 抽象类_Spring容器注解注入