InnoDB存储引擎(engine)主线程(master thread)工作流程分析

简介:

本文基于MySQL技术内幕 InnoDB存储引擎》中的master thread源码分析理解,作整理。
该书作者提供的master thread的伪代码:







































解释:

log buffer flush to disk 
把重做日志缓存(redo log)刷新到日志文件(log file)

merge insert buffer
合并插入缓存,这是InnoDB引擎特有的,指对于非聚集索引的插入或更新,不是每一次直接直接插入到索引页中,而是先判断插入的非聚集索引是否在缓冲池中。如果在,直接插入;如果不在,则先放主一个插入缓存区中,然后再以一定的频率插插入缓冲和非聚集索引页子节点的合并操作。通常是多个插入合并到一个操作中。

full purge
全清理操作,指删除无用的Undo页。对表执行updatedelete这类操作时,原先的行被标记为删除,但是因为一致性读(consistent read)的关系,需要保留这些行版本的信息。但是在full purge过程中,InnoDB存储引擎会判断当前事务系统中已被删除的行是否可以删除,比如有时候可能还有查询操作需要读取之前版本的Undo信息,如果可以,InnoDB会立即将其删除。注意full purge只会清除不再使用的Undo页。

buffer pool flush dirty page
对比磁盘上的数据块,指把缓冲池中修改过的数据页(修改过的data page,即脏页dirty page)刷新到硬盘上。

fuzzy checkpoint 
产生模糊检查点,检查点有点类似于windows操作系统中的系统还原点,会把最老日志序列号(LSN)的页写到硬盘上。

innodb_max_dirty_pages_pct 
InnoDB存储引擎中的一个动态变量,指缓冲池中脏页的比例。理论上更小的值,更大的IO。

从InnoDB Plugin开始可以通过show engine innodb status来查看当前master thread的状态信息。



     本文转自xiaoyuwang 51CTO博客,原文链接:http://blog.51cto.com/wangxiaoyu/471638,如需转载请自行联系原作者



相关文章
|
4月前
|
存储 SQL 关系型数据库
Mysql系列-4.Mysql存储引擎-InnoDB(下)
Mysql系列-4.Mysql存储引擎-InnoDB
49 0
|
3月前
|
存储 缓存 关系型数据库
MySQL - 存储引擎MyISAM和Innodb
MySQL - 存储引擎MyISAM和Innodb
|
5月前
|
存储 SQL 关系型数据库
MySQL存储引擎之MyISAM和InnoDB
MySQL存储引擎之MyISAM和InnoDB
48 0
|
3月前
|
存储 SQL 关系型数据库
Mysql专栏 - mysql、innodb存储引擎、binlog的工作流程
Mysql专栏 - mysql、innodb存储引擎、binlog的工作流程
82 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL存储引擎 InnoDB、MyISAM、Memory存储引擎的特点与区别
MySQL存储引擎 InnoDB、MyISAM、Memory存储引擎的特点与区别
57 0
|
4月前
|
存储 缓存 关系型数据库
Mysql系列-4.Mysql存储引擎-InnoDB(上)
Mysql系列-4.Mysql存储引擎-InnoDB
42 0
|
4月前
|
存储 SQL 关系型数据库
二十、MySQL技术体系之InnoDB存储引擎的索引
二十、MySQL技术体系之InnoDB存储引擎的索引
59 0
|
5月前
|
存储 缓存 关系型数据库
MySQL技术内幕:InnoDB存储引擎
MySQL技术内幕:InnoDB存储引擎
|
5月前
|
存储 关系型数据库 MySQL
⑩【MySQL】存储引擎详解, InnoDB、MyISAM、Memory。
⑩【MySQL】存储引擎详解, InnoDB、MyISAM、Memory。
39 0
|
2月前
|
关系型数据库 MySQL 数据库
MySQL谈谈InnoDB怎么解决幻读的
MySQL谈谈InnoDB怎么解决幻读的
21 2