• 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版

  • 相关阅读:
    菜鸟学自动化测试(三)—-selenium 命令
    菜鸟学自动化测试(二)—-selenium IDE 功能扩展
    用js实现自动打字动画效果
    hihoCoder #1015 : KMP算法
    hihoCoder #1014 : Trie树
    android相对布局中@id和@+id的区别(原理)
    android中动态给EditText获得焦点并弹起软键盘的方法详解
    网页版井字游戏(TicTacToe)人机对战的制作(附思路和源码)
    网页版番茄时钟的制作——Pomodoro Clock
    制作网页版简易计算器(Calculator)
  • 原文地址:https://www.cnblogs.com/wilburxu/p/8590548.html
Copyright © 2020-2023  润新知