innodb存储引擎架构

后台线程的作用:

刷新内存中的数据和写入磁盘的数据,并且在数据库异常时,innodb能恢复正常

内存池的作用:

维护内部使用的数据结构,缓存磁盘上的数据,重做日志(redo log)缓冲

redo log就是让数据库前滚,比如修改某个数据,没有修改成功,如果redo log中有记录,那么就可以使用redo log前滚

undo log就是让数据库回滚,比如修改某个数据,没有修改成功,放弃修改,undo log会记录该操作前数据库的状态,此时就可以使用undo log进行回滚

后台线程的组成

1.master thread:核心线程,异步刷新缓冲区的数据,保证数据一致

2.IO thread:innodb中大量使用异步IO,而IO thread的作用就是执行异步IO的回调(异步IO就是IO操作后,不阻塞,随后以状态的方式返回IO结果,并进行对应状态的处理)

查看IO thread的相关参数

show variables like 'innodb_%threads'\G

这三个参数表示读写线程和purge线程的数量

观察innodb的状态

show engine innodb status\G

显示的是过去31s的状态

可见当前MySQL实例的IO线程有一个insert buffer线程,一个log线程,4个读线程,4个写线程

3.purge thread

主要用来回收undolog所使用的undo页(就是回收undolog所占的内存和磁盘空间),因为数据库实例执行成功后,有些undolog就不需要了,需要回收

查看purge thread的个数(和上面一样)

show variables like 'innodb_%threads'\G

4.page cleaner thread

作用是刷新脏页(页就是磁盘或内存空间),关于脏页的说明见第三节

参考

《MySQL技术内幕,innodb存储引擎》

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

2.innodb后台线程相关推荐

  1. rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇

    0. Intro 在facebook的MySQL版本(以下称为MyRocks)中,RocksDB是可选的存储引擎.相比于InnoDB引擎,RocksDB的一个重要的优势是它使用更少的磁盘空间.在生产系 ...

  2. mysql innodbpurgethreads_MySQL后台线程的清理工作

    后台清理工作:脏页刷盘.undo回收 1.page cleaner thread:刷新脏页 2.purge thread:清空undo页.清理"deleted"page 一.inn ...

  3. MySQL技术:后台线程清理工作

    一.innodb_page_cleaners page cleaner线程从buffer pool中刷脏页的线程数量. 1.5.7新特性 1.5.6版本以前,脏页的清理工作交由master线程的: 2 ...

  4. 当进度对话框和后台线程处于活动状态时,如何处理屏幕方向变化?

    我的程序在后台线程中执行一些网络活动. 在开始之前,它会弹出一个进度对话框. 该对话框在处理程序上关闭. 这一切都可以正常工作,除非对话框打开(并且背景线程正在运行)时屏幕方向发生变化. 此时,应用程 ...

  5. 14.6 设置后台线程

    1.默认都不是后台线程, 通过setDaemon():方法来设置后台线程. 通过   对象.setDaemon(true);设置为后台线程,true表示是后台线程,false表示不是后台线程. 2.j ...

  6. Java前台线程与后台线程

    Java前台线程与后台线程 上一篇博客在main()方法中,创建并启动了四个新的线程后,main()方法中的代码执行完毕,此时,方法会结束,main线程也就随之结束了 通过程序的运行结果可以看出,虽然 ...

  7. java中的后台线程、前台线程、守护线程区别

    java中的后台线程.前台线程.守护线程区别 区别和联系 区别 联系 区别和联系 区别 后台线程和守护线程是一样的. 后台线程不会阻止进程的终止,而前台线程会, 可以在任何时候将前台线程修改为后台线程 ...

  8. c#后台线程更新界面

    参考文章<C# 线程更新UI界面> 主窗口 public frmMain(){InitializeComponent();}/// <summary>/// 主窗口加载事件// ...

  9. winform 后台线程更新UI

    //后台线程更新TextBoxprivate void SetTextBox(TextBox txt, string value){Action act = () =>{txt.Text = v ...

最新文章

  1. C# 调用C++ dll
  2. VS2010配置opencv2.4.9
  3. el-table中怎样设置标题栏颜色以及每一行颜色交替不同的效果
  4. Pots (BFS ➕ 输出路径)
  5. 尚硅谷的 ediary 笔记_干货分享 | 硅谷创新加速营第五讲教您合理规划融资需求 降低投资风险...
  6. IDEA太慢,喵喵要气死了
  7. 77-spark与storm比对与选型
  8. python官网安装程序的功能和特点_python介绍与安装(一)
  9. Android Studio 安装说明
  10. JProfiler12 最新使用教程
  11. uniapp小程序根据经纬度精确定位
  12. 视频会议中的AEC、AGC、ANS是什么?
  13. 【代码重构】临时字段(Temporary Field)-- 如何消除和处理代码中临时字段
  14. 自定义View - 仿QQ运动步数效果
  15. php户型图识别,5分钟教你马上看懂户型图
  16. 【Meetup讲师】您有一张社区认证讲师证书未领取,点击领取!
  17. 带视频教程|2.0升级版源码价值18500元的商业版游戏陪玩语音聊天系统源码
  18. 每日词根——count
  19. RichView 文档 段落 项目 ITEM
  20. php商城手机端省市显示,jQuery仿手机京东商城收货地址城市选择

热门文章

  1. mysql主从状态异常解决办法
  2. 分享一个针对触摸设备优化的图片幻灯jQuery插件 - touchtouch
  3. 基因名2-MAR等错误名字产生原因
  4. 根据gtf格式的基因注释文件得到人所有基因的染色体坐标
  5. python中sys.stdout、sys.stdin
  6. 随机森林——气温预测(2/2)
  7. 基于Python的信用评分卡模型分析
  8. messageSource can't replace {0} by params
  9. laravel博客中文章删除遇到问题
  10. Activity的生命周期是谁调用的?