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博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值