MySQL中的InnoDB引擎是当前最常用的事务型存储引擎,具有以下核心特性:
一、关键特性
ACID事务支持
- 通过
BEGIN、COMMIT、ROLLBACK实现完整的事务控制 - 支持四种隔离级别(如
READ COMMITTED)
- 通过
行级锁与MVCC
- 行锁粒度:仅锁定被访问的行
- MVCC(多版本并发控制)实现读写不阻塞
- 示例锁等待超时设置:
SET innodb_lock_wait_timeout = 50; -- 单位:秒
聚簇索引结构
- 数据文件本身按主键索引排序存储(B+树结构)
- 主键查询效率极高,二级索引包含主键值
关键性能优化
-- 缓冲池配置(建议占内存70%-80%) SET global innodb_buffer_pool_size = 8 * 1024 * 1024 * 1024; -- 8GB
二、物理存储
| 文件类型 | 作用 |
|---|---|
.ibd | 独立表空间(每表1文件) |
ibdata1 | 系统表空间 |
ib_logfile0/1 | Redo日志(事务恢复) |
三、典型应用场景
- OLTP系统(高并发事务)
- 需要外键约束的场景
- 数据一致性要求高的业务
四、与MyISAM对比
| 特性 | InnoDB | MyISAM |
|---|---|---|
| 事务 | ✅ 支持 | ❌ 不支持 |
| 锁粒度 | 行级锁 | 表级锁 |
| 崩溃恢复 | Redo日志保障 | 需修复表 |
| 全文索引 | MySQL 5.6+ 支持 | 原生支持 |
最佳实践:生产环境建议优先使用InnoDB,可通过
SHOW ENGINE INNODB STATUS查看引擎状态。