Mysql InnoDB 存储引擎简介
InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的
Mysql 为什么默认使用 InnoDB 存储引擎
InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎
在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版本,都默认使用 InnoDB 存储引擎;
可通过 show engines 命令查看当前服务支持的存储引擎
各个存储引擎支持的特性
由上图可以看出 InnoDB 存储引擎 相比于 MyISAM 存储引擎
支持事务(也是众多存储引擎中唯一支持的),使用行级锁(高并发性),支持崩溃时自动恢复,支持外键约束,支持全文索引,支持自适应哈希索引(针对反复查询的行),使用缓冲池(用于缓存数据页和索引,提高数据的访问速度)
所以基于上述 InnoDB 的优势,可以得出
-
事务支持和数据完整性:InnoDB 支持事务和外键约束,能够保证数据的完整性和一致性,适用于复杂的应用场景。而 MyISAM 不支持事务,存在数据丢失的风险。
-
高并发性能:InnoDB 采用行级锁,相较于 MyISAM 的表级锁,能够在高并发环境下表现更好,提高读写性能,减少锁冲突。
-
崩溃恢复能力:InnoDB 提供了更可靠的崩溃恢复机制,能在系统宕机或故障后自动恢复数据,保证系统的可用性和数据安全性。
因此在 Mysql 5.5 及其以后,使用了 InnoDB 存储引擎;
InnoDB 存储引擎架构
官方给出的架构图
由上图可以看出,InnoDB 主要包括内存结构和磁盘结构
其中内存结构包括:缓冲池(Buffer pool),变更缓冲区(Change Buffer),日志缓冲区(Log Buffer),自适应哈希(Adaptive Hash Index)
磁盘结构包括:系统表空间,独立表空间,通用表空间,临时表空间,撤销表空间,撤销日志,双写缓冲区