MySQL 存储引擎概览

MySQL存储引擎(Storage Engine)决定了数据如何存储、索引如何组织、事务是否支持、锁的粒度、崩溃恢复能力等,是数据库性能与可靠性的核心。


一、常见存储引擎对比(重点)

1. InnoDB(默认 / 首选)

特性

  • 支持事务(ACID)
  • 行级锁(并发能力强)
  • 支持外键
  • 崩溃恢复(redo / undo log)
  • 聚簇索引(数据即索引)

适用场景

  • 业务系统(ERP / 电商 / 金融)
  • 高并发写入
  • 对一致性、可靠性要求高

关键词(面试高频)

  • MVCC
  • Redo Log / Undo Log
  • 行锁 vs 间隙锁
  • Buffer Pool

2. MyISAM(已逐渐淘汰)

特性

  • 不支持事务
  • 表级锁
  • 读性能好
  • 表损坏风险高
  • 数据与索引分离(MYD / MYI)

适用场景

  • 只读或读多写少
  • 历史系统、统计类查询

MySQL 8.x 中已不推荐使用


3. Memory(内存表)

特性

  • 数据存放在内存
  • 默认 Hash 索引(也支持 B-Tree)
  • 重启即丢数据
  • 表级锁

适用场景

  • 临时表
  • 高速缓存表
  • 中间计算结果

4. Archive(归档引擎)

特性

  • 高压缩比
  • 只支持 INSERT / SELECT
  • 不支持索引(除自增)

适用场景

  • 日志归档
  • 审计数据
  • 历史冷数据

5. CSV

特性

  • 数据以 CSV 文件形式存储
  • 无索引、无事务

适用场景

  • 与外部系统做数据交换
  • ETL 中转

二、核心差异对比表

特性 InnoDB MyISAM Memory Archive
事务
锁粒度 行锁 表锁 表锁 行锁
崩溃恢复
外键
索引结构 B+Tree(聚簇) B+Tree Hash / B+Tree
默认引擎

三、如何查看和设置存储引擎

查看当前支持的引擎

sql 复制代码
SHOW ENGINES;

查看表的存储引擎

sql 复制代码
SHOW TABLE STATUS WHERE Name = 'user';

建表时指定引擎

sql 复制代码
CREATE TABLE user (
  id BIGINT PRIMARY KEY,
  name VARCHAR(50)
) ENGINE=InnoDB;

四、选型建议(实战经验)

  • 99% 的业务表:InnoDB
  • 缓存 / 临时数据:Memory
  • 日志 / 历史数据:Archive
  • 不要在新系统使用 MyISAM

五、面试一句话总结

InnoDB 是 MySQL 的事实标准存储引擎,核心优势是事务、行锁、MVCC 和高可靠性;其他引擎只在特定场景使用。


相关推荐
pixcarp6 小时前
知识库系统的内容资产闭环怎么设计
服务器·数据库·后端·golang
JosieBook6 小时前
【数据库】时序预测能力的分级进化:TimechoAI如何让每一类用户都能精准预见未来
java·开发语言·数据库
吴声子夜歌8 小时前
SQL经典实例——使用多张表
数据库·sql
倔强的石头_9 小时前
《Kingbase护城河》——深度解密数据库行锁冲突与等待事件架构
数据库
IT策士9 小时前
Redis 从入门到精通:性能调优与多语言客户端对比
数据库·redis·缓存
Bert.Cai10 小时前
Oracle INSTR函数详解
数据库·oracle
茉莉玫瑰花茶12 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
ywl47081208712 小时前
jwt生产token,简单版helloworld
java·数据库·spring
器灵科技12 小时前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github
huangdong_13 小时前
京东商品图片视频批量下载与m3u8视频合并技术完整实现方案
大数据·前端·数据库