一、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存储引擎的基本架构相关推荐

  1. InnoDB存储引擎详解

    存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎 . 文章目录 InnoDB存储引擎架构 实例 ...

  2. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 ​ 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...

  3. MySQL :InnoDB 存储引擎(lnnoDB 关键特性)

    asdsInnoDB 是事务安全的MySQL 存储引擎,设计上采用了类似于Oracle 数据库的架构.通常来说, InnoDB 存储引擎是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoD ...

  4. InnoDB 存储引擎体系架构

    首先以一张图简单展示 InnoDB 的存储引擎的体系架构.从图中可见, InnoDB 存储引擎有多个内存块,这些内存块组成了一个大的内存池,主要负责如下工作: 维护所有进程/线程需要访问的多个内部数据 ...

  5. 诸葛io的技术架构图_【总结】MySQL技术内幕二:InnoDB存储引擎技术特性

    二.InnoDB存储引擎 InnoDB是事务安全的MySQL存储引擎,通常是OLTP应用中核心表的首选存储引擎.同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力. 从MySQL 5 ...

  6. MySQL存储引擎 lnnoDB逻辑架构 innodb存储引擎表空间(ibd文件)详解 回滚日志的物理空间

    文章目录 存储引擎 一 MySQL组织架构 二 查看存储引擎信息 三 修改存储引擎 3.1 配置文件修改存储引擎 3.2 临时修改存储引擎 3.3 建表时修改存储引擎 四 存储引擎实验 五 数据库升级 ...

  7. Mysql技术内幕——InnoDB存储引擎

    一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据 ...

  8. 《MySQL技术内幕:InnoDB存储引擎第2版》——3.1 参数文件

    3.1 参数文件 在第1章中已经介绍过了,当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认 ...

  9. mysql+如何开发存储引擎_干货!MySQL 的 InnoDB 存储引擎是怎么设计的?

    MySQL 里还有什么其他成员呢? 对于 MySQL,要记住.或者要放在你随时可以找到的地方的两张图,一张是 MySQL 架构图,另一张则是 InnoDB 架构图: 遇到问题,或者学习到新知识点时,就 ...

  10. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

最新文章

  1. LeetCode-726. 原子的数量(python2)
  2. c#操作数据库(二)dataAdapter篇
  3. sublime text 常用快捷键
  4. Python(1):写在前面
  5. [转] C# 路径(目录)
  6. 基本类型优先于装箱基本类型
  7. android远程桌面软件毕设_向日葵远程管理软件
  8. centos上如何装python_centos如何安装Python3
  9. 病毒及***防御手册之五
  10. 微服务 注册中心的作用_微服务架构Dubbo之注册中心(Zookeeper)
  11. json解析和字符串解析_高效创建和解析定界字符串
  12. 2020 年软件开发趋势预测!
  13. 第13条:合理利用try/expect/else/finally结构中的每个代码块
  14. tomcat部署安装
  15. VS2017配置opencv教程(超详细!!!)
  16. Excel表格的35招必学秘技[配图]
  17. YAPI返回值怎么是html页面,Yapi部署
  18. npm ERR network Invalid response body while trying to fetch
  19. 生产计划管理软件有哪些?哪个好
  20. LSM树的基本原理-学习笔记

热门文章

  1. 利用jieba进行中文分词并进行词频统计
  2. 计算机网络连接图标 红叉,win7系统网络连接成功但图标显示红叉的解决方法
  3. EDA技术实用教程 | 复习十四 | Quartus II工具的使用
  4. 《Java就业培训教程》_张孝祥_书内源码_06
  5. c#高级编程第11版 pdf网盘_C#高级编程第11版 - 概述
  6. JAVA 入门教程 2
  7. 多媒体信息技术对远程教育的影响
  8. 基于Python的旅游管理系统-小程序
  9. Kubernetes学习笔记 黑马程序员
  10. SwitchHost下载安装和配置