innodb存储引擎的基本架构
一、Innodb存储引擎的架构图
① 内存块
左边内存块分为4大块:Buffer Pool、Change Buffer、AdaptiveHash Index、Log Buffer
AdaptiveHash Index表示自适应哈希索引,这里记住Log Buffer并不在Innodb Buffer Pool里面。
Innodb buffer pool包含 AdaptiveHash Index、changge buffer、数据页、索引页、数据字典等信息。
② 磁盘块
1、System Tablespace系统表空间
系统表空间Change Buffer更改缓冲区的存储区域。即如果innodb引擎当中我们每一张表的独立表空间开关关闭着的话,那么所有的表的数据以及索引也是在系统表空间的(在MySQL5.x版本中还包含InnoDB数据字典、undolog等)
参数:innodb_data_file_path
系统表空间,默认的文件名叫 ibdata1。
show variables like 'innodb_data_file_path';
2、File-Per-Table Tablespaces每张表的独立表空间
如果开启了innodb_file_per_table开关 ,则每个表的文件表空间包含单个InnoDB表的数据和索引 ,并存储在文件系统上的单个数据文件中。
开关参数:innodb_file_per_table ,该参数默认开启。
那也就是说,如果参数开启,我们每创建一个表,都会产生一个表空间文件,并不会在System Tablespace。
3、 General Tablespaces通用表空间
通用表空间,需要通过 CREATE TABLESPACE 语法创建通用表空间,在创建表时,可以指定该表空间
4、Undo Tablespaces撤销表空间
Undo Tablespaces叫做撤销表空间,也叫做undo表空间,MySQL实例在初始化时会自动创建两个默认的undo表空间(初始大小16M),用于存储undo log日志。
5、Temporary Tablespaces临时表空间
InnoDB 使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。
6、 Doublewrite Buffer Files双写缓冲区文件
双写缓冲区,innoDB引擎将数据页从Buffer Pool刷新到磁盘前,先将数据页写入双写缓冲区文件中,便于系统异常时恢复数据。
7、Redo Log重做日志
重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都会存到该日志中, 用于在刷新脏页到磁盘时,发生错误时, 进行数据恢复使用。
Redo Log里的内容不会永久保存,会每隔一段时间及进行清理之前没有用的Redo Log里的内容
以循环方式写入重做日志文件,涉及两个文件
存储在ib_logfile0和ib_logfile1中
二、Innodb后台线程
后台线程的作用就是将Innodb存储引擎的缓冲池当中的数据在合适的时机刷新到磁盘文件当中
接下来,就来介绍一些InnoDB中涉及到的后台线程:
在InnoDB的后台线程中,分为4类,分别是:
Master Thread 、IO Thread、Purge Thread、Page Cleaner Thread。
① Master Thread
核心后台线程,负责调度其他线程,还负责将缓冲池中的数据异步刷新到磁盘中, 保持数据的一致性,还包括脏页的刷新、合并插入缓存、undo页的回收 。
② IO Thread
在InnoDB存储引擎中大量使用了AIO(异步非阻塞IO)来处理IO请求, 这样可以极大地提高数据库的性能,而IOThread主要负责这些IO请求的回调。
show engine innodb status
③ Purge Thread
主要用于回收事务已经提交了的undo log,在事务提交之后,undo log可能不用了,就用它来回收
④ Page Cleaner Thread
协助 Master Thread 刷新脏页到磁盘的线程,它可以减轻 Master Thread 的工作压力,减少阻塞
参考:MySQL之InnoDB存储引擎-架构_GoGo在努力的博客-CSDN博客
innodb存储引擎的基本架构相关推荐
- InnoDB存储引擎详解
存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎 . 文章目录 InnoDB存储引擎架构 实例 ...
- MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02
MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...
- MySQL :InnoDB 存储引擎(lnnoDB 关键特性)
asdsInnoDB 是事务安全的MySQL 存储引擎,设计上采用了类似于Oracle 数据库的架构.通常来说, InnoDB 存储引擎是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoD ...
- InnoDB 存储引擎体系架构
首先以一张图简单展示 InnoDB 的存储引擎的体系架构.从图中可见, InnoDB 存储引擎有多个内存块,这些内存块组成了一个大的内存池,主要负责如下工作: 维护所有进程/线程需要访问的多个内部数据 ...
- 诸葛io的技术架构图_【总结】MySQL技术内幕二:InnoDB存储引擎技术特性
二.InnoDB存储引擎 InnoDB是事务安全的MySQL存储引擎,通常是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力. 从MySQL 5 ...
- MySQL存储引擎 lnnoDB逻辑架构 innodb存储引擎表空间(ibd文件)详解 回滚日志的物理空间
文章目录 存储引擎 一 MySQL组织架构 二 查看存储引擎信息 三 修改存储引擎 3.1 配置文件修改存储引擎 3.2 临时修改存储引擎 3.3 建表时修改存储引擎 四 存储引擎实验 五 数据库升级 ...
- Mysql技术内幕——InnoDB存储引擎
一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据 ...
- 《MySQL技术内幕:InnoDB存储引擎第2版》——3.1 参数文件
3.1 参数文件 在第1章中已经介绍过了,当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认 ...
- mysql+如何开发存储引擎_干货!MySQL 的 InnoDB 存储引擎是怎么设计的?
MySQL 里还有什么其他成员呢? 对于 MySQL,要记住.或者要放在你随时可以找到的地方的两张图,一张是 MySQL 架构图,另一张则是 InnoDB 架构图: 遇到问题,或者学习到新知识点时,就 ...
- MySQL内核:InnoDB存储引擎 卷1
MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...
最新文章
- LeetCode-726. 原子的数量(python2)
- c#操作数据库(二)dataAdapter篇
- sublime text 常用快捷键
- Python(1):写在前面
- [转] C# 路径(目录)
- 基本类型优先于装箱基本类型
- android远程桌面软件毕设_向日葵远程管理软件
- centos上如何装python_centos如何安装Python3
- 病毒及***防御手册之五
- 微服务 注册中心的作用_微服务架构Dubbo之注册中心(Zookeeper)
- json解析和字符串解析_高效创建和解析定界字符串
- 2020 年软件开发趋势预测!
- 第13条:合理利用try/expect/else/finally结构中的每个代码块
- tomcat部署安装
- VS2017配置opencv教程(超详细!!!)
- Excel表格的35招必学秘技[配图]
- YAPI返回值怎么是html页面,Yapi部署
- npm ERR network Invalid response body while trying to fetch
- 生产计划管理软件有哪些?哪个好
- LSM树的基本原理-学习笔记