MySQL进阶知识点(六)---- 存储引擎

一、 MySQL 体系结构

为了更好地理解存储引擎,首先需要了解 MySQL 的总体架构,可以分为四层:

层级 组件 说明
连接层 连接池、身份验证 负责客户端连接管理、权限认证等
服务层 SQL接口、解析器、优化器、查询缓存 负责SQL语句的解析、优化、以及内置函数、触发器等
引擎层 可插拔存储引擎 核心! 负责数据的存储和提取。服务器通过API与存储引擎通信
存储层 文件系统、日志 将数据存储在硬盘上,包括redo log、undo log、数据文件等

核心思想 :MySQL 的架构设计使得其存储引擎层是可插拔的。这意味着你可以为不同的表选择不同的存储引擎,以适应各种应用场景。


二、 存储引擎简介

1. 什么是存储引擎?

存储引擎是数据库底层软件组件,它规定了数据如何存储、如何索引、如何更新和查询。不同的存储引擎提供不同的功能和特性。

2. 查看支持的存储引擎
sql 复制代码
SHOW ENGINES;
3. 查看/修改表的存储引擎
sql 复制代码
-- 查看某张表的存储引擎
SHOW CREATE TABLE table_name;

-- 创建表时指定存储引擎
CREATE TABLE table_name (...) ENGINE=InnoDB;

-- 修改已存在表的存储引擎
ALTER TABLE table_name ENGINE=MyISAM;

三、 存储引擎特点

MySQL 支持多种存储引擎,其中最主流的是 InnoDBMyISAM

InnoDB (MySQL 5.5.8 后成为默认存储引擎)
特性 描述
事务支持 支持 ACID 事务,具有提交(commit)和回滚(rollback)能力
外键约束 支持 外键约束,保证数据完整性
锁机制 🔒 行级锁,支持并发写入,大大减少锁冲突,适合高并发
崩溃恢复 ✅ 通过 redo logundo log 提供优秀的崩溃恢复能力
存储方式 所有表和数据存储在表空间 中(如 ibdata1 文件),或按表文件存储(innodb_file_per_table=ON
MVCC ✅ 支持多版本并发控制,提高并发读写性能

适用场景

  • 需要事务支持(如银行转账、订单系统)

  • 高并发读写(行级锁优势明显)

  • 需要外键约束来保证数据完整性

  • 绝大多数 OLTP (联机事务处理) 应用

MyISAM (MySQL 5.5 之前的默认引擎)
特性 描述
事务支持 不支持
外键约束 不支持
锁机制 🔒 表级锁,并发写入性能差(读锁和写锁是互斥的)
崩溃恢复 ❌ 较差
存储方式 每个表在磁盘上存储为三个文件: .frm(表结构)、.MYD(数据)、.MYI(索引)
全文索引 支持(在早期版本中是优势)
压缩性 ✅ 支持压缩表,适合只读数据

适用场景

  • 只读或读多写少的应用

  • 不需要事务

  • 数据仓库、报表系统等查询密集型且对数据一致性要求不高的场景

其他存储引擎简要对比
引擎 主要特点 适用场景
Memory 数据存储在内存中,速度极快;服务器重启后数据丢失 缓存、临时表、会话存储
Archive 只支持INSERT和SELECT,高压缩比 日志记录、数据归档
CSV 以CSV格式存储数据 数据交换

四、 InnoDB vs MyISAM 核心区别总结

对比项 InnoDB MyISAM
事务 ✅ 支持 ❌ 不支持
外键 ✅ 支持 ❌ 不支持
锁级别 行级锁 表级锁
并发性能 (写操作) (写操作)
崩溃恢复 ✅ 安全,支持 ❌ 不安全
全文索引 ✅ MySQL 5.6+ 支持 ✅ 支持(早期版本优势)
存储文件 .frm + ibdata1 / .ibd .frm + .MYD + .MYI
COUNT(*) 需要全表扫描(无WHERE时) 直接返回保存的计数(极快)

五、 存储引擎选择

选择存储引擎需要根据应用的核心需求来决定。

需求场景 推荐引擎 理由
绝大多数通用业务场景 InnoDB 支持事务、行级锁、外键,数据安全性和并发性能是首要考虑
读远大于写,且不需要事务 MyISAM 在只读或轻度写入场景下,COUNT(*) 等特定操作更快
需要全文索引 (MySQL 5.6前) MyISAM 早期版本中唯一支持全文索引的引擎
临时数据、高速缓存 Memory 数据存储在内存中,读写速度极快
日志记录、数据归档 Archive 极高的压缩比,节省存储空间

六、现代 MySQL 开发的黄金法则

除非有非常特殊且合理的理由,否则请始终使用 InnoDB 存储引擎。

  • 自 MySQL 5.5.8 起,InnoDB 已成为默认引擎

  • 它提供了事务安全行级锁,这是现代应用程序的基石。

  • 在大多数情况下,其性能已经优于或等同于 MyISAM。

  • MySQL 8.0 中,MyISAM 的相关系统表也已被 InnoDB 替代,这预示着其未来的地位。

小结

存储引擎是 MySQL 数据库的心脏 ,它决定了数据的存储方式、事务能力、并发控制和可靠性。理解不同存储引擎的特点,并根据业务需求做出正确选择,是构建高性能、高可用数据库应用的关键一步。在当今,InnoDB 是你不二的选择

相关推荐
muddjsv22 分钟前
SQLite数据库文件机制详解:journal、wal、shm文件作用与备份避坑
数据库·sqlite
吴声子夜歌2 小时前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界2 小时前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔2 小时前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元2 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai2 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby3 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
ClouGence3 小时前
除了 DBeaver,2026 年还有哪些好用的开源数据库管理工具?
数据库·开源
景芯SoC芯片实战4 小时前
12nm工艺下,6T-Turbo Cell的Filler到底该怎么插?
数据库·数字ic·dft·soc后端
韩楚风4 小时前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian