博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
InnoDB 存储引擎的线程与内存池
阅读量:6480 次
发布时间:2019-06-23

本文共 1031 字,大约阅读时间需要 3 分钟。

 

InnoDB体系结构如下:

 

后台线程:

1、后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据;

2、另外,将以修改的数据文件刷新到磁盘文件;

3、同时,保证在数据库发生异常的情况下,InnoDB能恢复到正常运行状态。

内存池:InnoDB有多个内存块,这些内存块组成了一个大的内存池。这些内存块包括有:缓冲池(innodb_buffer_pool)和日志缓冲(log_buffer)以及额外内存池(innodb_addtional_mem_pool_size)。

 


后台线程:后台默认的线程有7个-----4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程,但是在mysql5.5以及innodb plugin版本中,默认IO线程均增加到了4个,读写线程分别用参数innodb_read_io_thread和innodb_write_io_thread来表示。

 

Mysql5.1 innodb_version 为1.0.7 

可以看到有1个Insert buffer thread ,1个log thread,4个read thread,4个write thread。

 

或者直接通过查看变量 ‘innodb_%threads’来查看。

 

Mysql5.5 innodb_version 为1.1.8

 

Mysql5.5 innodb的线程和Innodb plugin的情况类似。

 


Master thread在主循环中,分两大部分操作:每秒钟的操作和每10秒钟的操作:

每秒一次的操作包括:

1、日志缓冲刷新到磁盘,即使这个事务还没有提交(总是),这点解释了为什么再大的事务commit时都很快!

2、合并插入缓冲(可能)

合并插入并不是每秒都发生,InnoDB会判断当前一秒内发生的IO次数是否小于5,如果是,则系统认为当前的IO压力很小,可以执行合并插入缓冲的操作。

3、至多刷新100个InnoDB的缓冲池的脏页到磁盘(可能)

这个,刷新100个脏页也不是每秒都在做

每10秒一次的操作包括:

1、刷新100个脏页到磁盘(可能)。

2、合并至多5个插入缓冲(总是)。

3、将日志缓冲刷新到磁盘(总是)。

4、删除无用的undo页(总是)。

5、产生一个检查点(checkpoing)。

转载于:https://www.cnblogs.com/xiaobaxiing/p/6540012.html

你可能感兴趣的文章
HttpClient4.5教程-第二章-连接管理
查看>>
redhat Nginx 安装
查看>>
oracle 配置监听
查看>>
上海访微软 详解Azure和S+S
查看>>
跨国巨头猛攻语音识别技术 让电脑听懂人们说话
查看>>
moosefs即将发布新版
查看>>
FOSCommentBundle功能包:运行测试
查看>>
SmartGit 试用过期
查看>>
python 测试驱动开发的简单例子
查看>>
Aes 加密简单例子
查看>>
AE 线编辑
查看>>
软件设计之UML—UML的构成[上]
查看>>
[SPLEB]CodeSmith原理剖析(1)
查看>>
如何使用AdMob中介界面?
查看>>
分享一个shell脚本:通过Jumper机器来创建Jumper和target机器账号
查看>>
UITableViewCell分割线不是左对齐的问题
查看>>
CentOS7 编译安装PHP7
查看>>
MySQL常见错误代码及代码说明
查看>>
Cglib动态代理基础使用
查看>>
技术人员,为什么会苦逼
查看>>