zoukankan      html  css  js  c++  java
  • InnoDB体系架构(一)后台线程

    InnoDB体系架构——后台线程

      上一篇已经了解了MySQL数据库的体系结构 这一篇除了介绍InnoDB存储引擎的体系架构外,同时进一步了解InnoDB的后台线程。

      InnoDB存储引擎是多线程的模型,所以犹太有多个不同的后台线程,负责处理不同的任务,主要有:Master Thread、IO Thread、Purge Thread、Page Cleaner Thread四种。

      从上面图可以简单的了解InnoDb存储引擎有多个内存块。而后台线程的主要工作是负责处理(刷新)内存池中的数据,保证缓冲池中内存缓冲的是最新的数据。此外会将已修改的数据文件更新至磁盘文件,同时保证在数据库发生异常情况下,InnoDB能恢复到正常运行状态。

    一、Master Thread

      Master Thread 是核心的后台线程,InnoDB存储引擎的主要工作都是由Master Thread 完成的。Master Thread的线程优先级别是最高,主要负责将缓冲池中的数据异步刷新到磁盘,包括脏页的刷新、合并插入缓冲(Insert Buffer)、回滚页(UNDO PAGE)的回收。

    二、IO Thread

      在InnoDB存储引擎中大量使用AIO来处理IO请求,而IO Thread主要负责处理这些 IO 请求的回调(call back) 

      默认情况下,InnoDB存储引擎的后台线程有10个:

        四个read thread

        四个write thread

        一个insert buffer thread

        一个log thread

      可以通过 show engine innodb status 命令查看

      

    三、Purge Thread

      事务被提交后,,PurgeThread用来回收 undolog(可能不再需要了)。

      InnoDB1.2+开始,支持多个Purge Thread 这样做的目的为了加快回收undo页(释放内存)。

    四、Page Cleaner Thread

      Page Cleaner Thread 在InnoDB1.2+新加入的,其作用是将之前版本中脏页的刷新操作都放入单独的线程中来完成,这样减轻了 Master Thread 的工作及对于用户查询线程的阻塞

    参考:《MySQL技术内幕 InnoDB存储引擎》 第2版

  • 相关阅读:
    基于vue的购物车清单
    圣杯布局和双飞翼布局
    正则限制input负数输入
    vue.js devtools图标不亮
    将二维数组转换成一维数组(基于reduce)
    基于PROMISE解决回调地狱问题
    封装AJAX库(参考JQ)
    for in和for of的区别
    抢购倒计时的实现
    git clone --depth=1 后获取其他分支
  • 原文地址:https://www.cnblogs.com/wilburxu/p/8590548.html
Copyright © 2011-2022 走看看