存储引擎是什么存储引擎是 MySQL 中负责数据的存储、读取、管理以及索引、事务、锁等功能的底层软件组件。简单理解存储引擎决定了数据在硬盘或内存中“怎么存、怎么查、怎么维护”。核心特点插件式架构MySQL 支持多种存储引擎可以在表级别指定一个数据库中不同表可以用不同引擎。默认引擎MySQL 5.5 之前是 MyISAM之后是 InnoDB。InnoDBInnoDB 引擎提供了对数据库 ACID 事务的支持并且还提供了行级锁和外键的约束。它的设计目标就是处理大数据容量的数据库系统。可以理解为“一个带事务、高并发、崩溃恢复能力的数据库操作系统”。MySQL 5.5以后默认引擎。它内部包含 - 内存管理 - 日志系统 - 锁系统 - 崩溃恢复 - 页管理 - B树索引 - MVCCInnoDB 本质内存(Buffer Pool) 日志系统(redo/undo) B树 锁系统 MVCCInnoDB整体架构客户端SQL ↓ SQL解析 ↓ 执行器 ↓ InnoDB │ ├── Buffer Pool内存缓存 ├── redo log重做日志 ├── undo log回滚日志 ├── change buffer ├── double write ├── lock system └── flush刷盘 ↓ 磁盘.ibd文件MyISAM 引擎原本 MySQL 的默认引擎不提供事务的支持也不支持行级锁和外键。现在基本淘汰。最大问题是只有表锁UPDATE user SET nameA WHERE id1直接锁整张表并发很差。不支持事务-- 示例BEGIN;UPDATEA;UPDATEB;ROLLBACK;MyISAM 会忽略BEGIN、COMMIT、ROLLBACK、SAVEPOINT等事务相关语句不会报错也不会开启事务。BEGIN在 MyISAM 中不会生效。UPDATE A;执行后立刻、永久修改磁盘上的数据。没有事务日志undo log所以改完就改完了无法撤销。UPDATE B;同样执行完后立即持久化。ROLLBACK;在这里毫无作用。因为前两个UPDATE已经被“硬提交”了ROLLBACK无法撤销它们。MEMORY引擎所有的数据都在内存中不是磁盘。数据的处理速度快但是安全性不高。最大问题是重启数据丢失。只有表锁。数据太大内存吃不消。默认是HASH索引优点等值查询极快缺点范围查询差。对比特性InnoDBMyISAMMEMORY事务✅❌❌行锁✅❌表锁少✅✅MVCC✅❌❌外键✅❌❌崩溃恢复✅❌❌数据存储磁盘磁盘内存重启保留数据✅✅❌默认索引B树B树HASH并发能力高低中当前主流⭐⭐⭐⭐⭐⭐⭐⭐