InnoDb存储引擎概念与原理(高性能MySQL第三版)

  • InnoDB介绍
  • InnoDB和ACID模型
  • InnoDB多版本
  • InnoDB架构
  • InnoDB锁和事务模型
  • InnoDB配置

InnoDB的整体架构

InnoDB兼具高可靠性和高性能。 在MySQL 5.6中,InnoDB是默认的官方推荐的存储引擎。
InnoDB的整体架构图:(请忽略图中的XTraDB)在这里插入图片描述
InnoDB多线程模型:在这里插入图片描述
多线程
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

InnoDB表的最佳实践

在这里插入图片描述

InnoDB和ACID模型

ACID是什么?
A: atomicity. 原子性
C: consistency. 一致性
I : isolation. 隔离性
D: durability. 持久性
ACID其实是mysql的四种特性,见下图:在这里插入图片描述
mysql的哪些模块/设计与ACID相关?在这里插入图片描述在这里插入图片描述
在这里插入图片描述

InnoDB多版本

在这里插入图片描述在这里插入图片描述
InnoDB Multi-Versioning的原理。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

InnoDb架构

InnoDB兼具高可靠性和高性能。 在MySQL 5.6中,InnoDB是默认的官方推荐的存储引擎。 在这里插入图片描述
InnoDB多线程模型:在这里插入图片描述在这里插入图片描述在这里插入图片描述innodb的缓存池是什么?

InnoDB缓存池,本质上是内存中的一块区域,当数据被访问时,InnoDB会把表数据、索引数据缓存在 buffer pool 缓存池中。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
加速写实现原理在这里插入图片描述

更改缓冲区在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

自适应哈希索引

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

redo log缓冲区

redo log缓冲区是一块内存区域,保存将要写入redo log的数据。
mysql 崩溃恢复是需要redo log的。

redo log缓冲区大小由innodb_log_buffer_size配置选项定义。
redo log缓冲区会定期把内存中的回滚日志刷到磁盘上。一个大的redo log缓冲区意味着允许大事务运行,而无需在事务提交之前将redo log写入磁盘。因此,如果您有更新,插入或删除多行的事务,则使用更大的redo log缓冲区可节省磁盘I/O。在这里插入图片描述在这里插入图片描述控制 InnoDB 事务日志刷新方式参数:innodb_flush_log_at_trx_commit :在这里插入图片描述在这里插入图片描述在这里插入图片描述

系统表空间在这里插入图片描述

系统表空间还包含任何用户在系统表空间中创建的表和索引数据。
系统表空间被视为共享表空间,因为它被多个表共享。在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

InnoDb数据字典在这里插入图片描述在MySQL8.0 之前,由于历史原因。
Data Dictionary除了存在于InnoDB系统表空间。
还存在于文件系统的 .FRM, .TRG, .OPT ⽂件中。
还存在于系统表中(基于MyISAM存储引擎的⾮事务引擎表中)。而且在一定程度上彼此的信息是重叠的。在MySQL8.0,Data Dictionary 全部存在于Data Dictionary Storage Engine(即 InnoDB表中)在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
双写缓冲区
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
file-per-table
在这里插入图片描述在这里插入图片描述重做日志-redo log在这里插入图片描述

InnoDb锁和事务模型

InnoDb锁

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
锁的介绍一篇比较好的文章
http://mysql.taobao.org/monthly/2016/01/01/
InnoDb事务模型在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述InnoDb配置在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wolf_love666/article/details/87978671