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 和高可靠性;其他引擎只在特定场景使用。


相关推荐
Rain的Java大神之路6 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊6 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技7 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰7988 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky8 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐9 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB10 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶10 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax10 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB10 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析