innodb 体系结构(后台进程)
一.后台进程(innodb 1.0.x以前的)
1.master thread
master thread具有最高的线程优先级别,其内部由多个循环(loop)组成:主循环(loop)、后台循环(backgroup loop)、刷新循环(flush loop)、暂停循环(suspend loop)
①loop:每秒钟的操作和每10s的操作
每秒的操作:
...日志缓冲刷新到磁盘,即使这个事务还没有提交(总是)
...合并插入缓冲(可能):
并不是每秒都发生,innodb存储引擎会判断当前一秒内发生的io次数是否小于5次,如果小于5次,innodb认为当前的io压力很小,可以执行合并插入缓冲操作。
...至少刷新100个innodb的缓冲池中的脏页到磁盘(可能)
innodb存储引擎通过判断当前缓冲池中脏页的比例(buf_get_modified_ratio_pct)是否超过了配置文件中innodb_max_dirty_pages_pct这个参数
...如果当前没有用户活动,则切换到backgroup loop(可能)
每10s的操作
...刷新100个脏页到磁盘(可能的情况下)
...合并至多5个插入缓冲(总是)
...将日志缓冲刷新到磁盘(总是)
...删除无用的undo页(总是)
...刷新100个或者10个脏页到磁盘(总是)
2.background loop
若当前没有用户活动(数据库空闲时)或者数据库关闭(shutdown),就会切换到这个循环
...删除无用的undo页(总是)
...合并20个插入缓冲(总是)
...跳回到主循环(总是)
...不断刷新100个页直到符合条件(可能,跳转到flush loop中完成)
innodb1.2.x以前的
innodb_io_capacity:表示磁盘io的吞吐量,默认值为200
...在合并插入缓冲时,合并插入缓冲的数量为innodb_io_capacity值得5%
...在从缓冲区刷新脏页时,刷新脏页的数量为innodb_io_capacity
若用户使用了ssd类的磁盘,或者将几块磁盘做了raid,当存储设备拥有更高的io速度时,完全可以将innodb_io_capacity的值调的再高点,直到符合磁盘io的吞吐量为止
innodb_max_dirty_pages_pct:改为默认75%
innodb_adaptive_flushing:此功能会当脏页的比例小于innodb_max_dirty_pages_pct时,也会刷新一定量的脏页
innodb_purge_batch_size:之前每次进行full purge操作时,最多回收20个undo页,该参数可以控制每次full purge回收的undo页
show engine innodb status\G;
其中每秒的loop次数与sleep次数比例接近1:1,每10s的loop与sleep次数接近1:10,如是这种情况,则说明数据库较闲,如果loop次数与sleep次数大于1:1,说明数据库比较忙,睡觉的时间少了。
innodb 1.2.x
从master thread线程分离到一个单独的page cleaner thread,从而减轻了master thread的工作
innodb 体系结构(后台进程)的更多相关文章
- Mysql Innodb体系结构
Innodb体系结构 Innodb存储引擎主要包括内存池以及后台线程. 内存池:多个内存块组成一个内存池,主要维护进程/线程的内部数据.缓存磁盘数据,修改文件前先修改内存.redo log 后台线程: ...
- 《Mysql技术内幕,Innodb存储引擎》——Innodb体系结构
Innodb体系结构 Innodb存储引擎主要包括内存池以及后台线程. 内存池:多个内存块组成一个内存池,主要维护进程/线程的内部数据.缓存磁盘数据,修改文件前先修改内存.redo log 后台线程: ...
- InnoDB体系结构
1.前言 整理了下InnoDB体系结构,方便以后更简单的理解 2.思维导图 参考: https://www.cnblogs.com/tangshiguang/p/6741035.html https: ...
- [小结]InnoDB体系结构及工作原理
参阅:<innodb存储引擎内幕>原创文章,会不定时更新,转发请标明出处:http://www.cnblogs.com/janehoo/p/7717041.html 一.概述: innod ...
- [原创]InnoDB体系结构
参阅:<innodb存储引擎内幕> innodb整体的体系结构如下图所示: 整体结构分两大部分:内存和进程其中内存包括:buffer_pool\redo log buffer\addit ...
- InnoDB体系结构学习笔记
后台线程 Master Thread 核心的后台线程,主要负责将缓冲池的数据异步刷新到磁盘,保证数据的一致性,包括(脏页的刷新).合并插入缓冲.(UNDO页的回收)等 IO Thread 4个writ ...
- Innodb的体系结构
MySQL的体系结构,两部分组成:MySQL的server层和存储引擎层. 存储引擎层innodb体系结构: innodb的整个体系结构就是由多个内存块组成的缓冲池及多个后台进程组成.我们可以从三方面 ...
- MySQL InnoDB 存储引擎原理浅析
注:本文主要基于MySQL 5.6以后版本编写,多数知识来着书籍<MySQL技术内幕++InnoDB存储引擎>,本文章仅记录个人认为比较重要的部分,有兴趣的可以花点时间读原书. 一.MyS ...
- 第四课(1)——MySQL体系结构
学习目标 一.MySQL体系结构 二.MySQL内存结构 三.MySQL文件结构 四.Innodb体系结构 MySQL体系结构 一.MySQL体系结构图 1.Mysql是由SQL接口,解析器,优化器, ...
随机推荐
- 知识点:Mysql 索引原理完全手册(2)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 八. 联合索引与覆盖索引 ...
- python 字符串转16进制函数
需要用python处理16进制的文本,比如像下面这个文本 40 80 C0 40 80 C0 40 80 C0 40 80 C0 40 BF CC 40 80 C0 40 80 C0 40 80 C0 ...
- Heroku 教程
中文 https://www.jianshu.com/p/7bc34e56fa39 http://www.bjhee.com/flask-heroku.html 官方 Getting Started ...
- Win10和Ubuntu双系统搭建详
最近学习云计算时,需要搭建xen和Hadoop,虚拟机容易出很多问题所以搭建了双系统,也方便以后的学习. 下面是详细搭建过程: 准备材料: U盘(容量>8G,最好是3.0接口速度快).Ultra ...
- Java Base64位加密和解密(包括其他加密参考)
链接https://blog.csdn.net/longguangfu8/article/details/78948213 常用加密解密算法[RSA.AES.DES.MD5]介绍和使用 https:/ ...
- 《机器学习实战》之一:knn(python代码)
数据 标称型和数值型 算法 归一化处理:防止数值较大的特征对距离产生较大影响 计算欧式距离:测试样本与训练集 排序:选取前k个距离,统计频数(出现次数)最多的类别 def classify0(inX, ...
- Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
这一篇主要是学习python里面的模块,篇幅可能会比较长 模块的概念:在Python中,一个.py文件就称之为一个模块(Module). 模块一共三种: python标准库 第三方模块 应用程序自定义 ...
- python———day02
算术运算符 >>>1+2 3 >>>3-2 1 >>>2*2 4 >>>5/2 2.5 >>>5//2 #整除 ...
- mysql登录1045错误时 修改登录密码
1.进入 mysql 的 bin 目录下,打开 cmd ,关闭 mysql 数据库. 2.输入 mysqld --skip-grant-tables 回车. 保持窗口不要更改不要关闭 (--skip- ...
- ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction解决办法
一.问题描述: 同事反馈线上一个表有其中一条数据无法删除,其他都正常,我拿到删数据的sql,尝试执行,报错如下: mysql> delete from facebook_posts where ...