存储引擎概述
存储引擎是数据库底层软件组件,负责数据的存储、检索和管理。MySQL 的核心特性之一就是支持多种存储引擎,允许用户针对不同表选择最适合的引擎。
查看支持的存储引擎
SHOW ENGINES;
结果中的 `Support` 列含义:
`YES`:支持使用
`NO`:不支持使用
`DEFAULT`:当前默认存储引擎
MySQL 主要存储引擎对比
存储引擎 | 描述 | 主要特点 |
---|---|---|
InnoDB | 具备外键支持的事务处理引擎 | 支持事务、行级锁、外键,MySQL 5.5+ 默认引擎 |
MyISAM | 主要的非事务处理存储引擎 | 不支持事务、表级锁、全文索引、较高的读取性能 |
MEMORY | 置于内存的表(原HEAP) | 数据存储在内存中,速度快但服务器重启后数据丢失 |
ARCHIVE | 用于数据存档的引擎 | 数据插入后不能修改,不支持索引,高压缩比 |
CSV | 以逗号分隔值格式存储数据 | 数据以文本形式存储,可直接用文本编辑器查看 |
BLACKHOLE | 丢弃所有写操作,返回空内容 | 常用于复制架构和数据验证 |
FEDERATED | 访问远程表的存储引擎 | 数据实际存储在远程数据库中 |
MERGE | 管理多个MyISAM表的集合(MRG_MyISAM) | 将多个结构相同的MyISAM表逻辑组合成一个表 |
NDB | MySQL集群专用存储引擎(NDBCLUSTER) | 高可用性、高性能的集群环境专用引擎 |
重要特性说明
事务支持:
支持:InnoDB
不支持:MyISAM、MEMORY等
2.锁定级别:
行级锁:InnoDB
表级锁:MyISAM、MEMORY
3.外键支持:
支持:InnoDB
不支持:其他引擎
4.存储位置:
磁盘存储:InnoDB、MyISAM
内存存储:MEMORY
5. 历史名称:
MEMORY → HEAP (已废弃)
InnoDB → Innobase (已废弃)
选择建议
1. InnoDB:大多数情况下的首选,特别是需要事务、外键或高并发写入的场景
2. MyISAM:只读或读多写少的场景,需要全文索引时
3. MEMORY:临时数据、高速访问但可丢失的数据
4. ARCHIVE:只插入不修改的历史数据存档
注意事项
MySQL 5.5+ 默认使用 InnoDB 引擎
同一数据库中可以混合使用不同存储引擎的表
存储引擎的选择会显著影响性能、并发性和功能特性
某些引擎有特定用途(如NDB用于集群,FEDERATED用于远程访问)
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程