InnoDB是MySQL 5.5起默认存储引擎,专为高并发OLTP设计,支持ACID事务、行级锁+MVCC、外键约束、崩溃恢复(redo/undo log)及缓冲池优化。

InnoDB 是 MySQL 自 5.5 版本起的默认存储引擎,专为高并发、事务性强的 OLTP 场景设计。它不是“功能多”,而是每一项核心能力都紧密围绕数据安全与并发效率展开。
支持完整的 ACID 事务
原子性、一致性、隔离性、持久性全部落地。一个事务内的多条语句,要么全部生效,要么全部回滚。银行转账、订单扣减这类操作必须依赖它。MySQL 中通过 BEGIN 开启、COMMIT 提交、ROLLBACK 回滚来控制流程,且默认自动提交(autocommit=1),高频写入时建议显式控制事务边界以减少日志刷盘压力。
行级锁 + MVCC 实现高并发读写
不会因为更新某一行就锁住整张表。其他事务仍可读写表中其他行。配合多版本并发控制(MVCC),在默认的 可重复读(REPEATABLE READ) 隔离级别下,普通 SELECT 不加锁,能读到事务开始时刻的一致性快照,避免脏读和不可重复读;同时通过 Next-Key Lock(行锁 + 间隙锁)防止幻读。
外键约束保障数据关联正确
只有 InnoDB 支持外键(FOREIGN KEY)。定义后,数据库会在 INSERT/UPDATE/DELETE 时自动校验引用完整性。比如删除用户前,若其订单还存在,系统会直接拒绝,无需应用层额外判断。父表字段需有索引,子表外键列也会被自动建立索引。
崩溃可恢复:redo log 和 undo log 双保障
异常断电或进程崩溃后重启,InnoDB 能自动恢复到一致状态:
• redo log 记录物理变更,用于重放未落盘的已提交事务;
• undo log 记录逻辑前镜像,用于回滚未提交事务,也支撑 MVCC 的历史版本读取。
这两类日志配合检查点(checkpoint)机制,让数据既不丢也不乱。
缓冲池(Buffer Pool)大幅提升访问速度
InnoDB 不直接读写磁盘,而是把常用的数据页和索引页缓存在内存的 Buffer Pool 中。查询命中内存就免去磁盘 IO。关键参数 innodb_buffer_pool_size 建议设为物理内存的 50%–75%(OLTP 场景),这是影响性能最显著的配置之一。它还自带自适应哈希索引、预读、脏页刷新等优化策略。










