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


相关推荐
Anastasiozzzz18 小时前
MySQL深分页问题与优化思路
数据库·mysql
伯明翰java18 小时前
数据库的操作
数据库
知识分享小能手1 天前
PostgreSQL 入门学习教程,从入门到精通,PostgreSQL 16 语法知识点与案例详解(1)
数据库·学习·postgresql
康康的AI博客1 天前
智能情感分析与品牌策略优化:如何通过AI洞察提升企业市场响应力
大数据·数据库·人工智能
Anastasiozzzz1 天前
阿亮随手记:MySQL移除查询缓存、子查询优化深分页、自增主键溢出、索引失效
数据库·mysql·缓存
ppp今天又没打瓦1 天前
围达梦数据库批量插入更新性能实测:普通表、一级分区与二级分区的对决
数据库
@insist1231 天前
软考-数据库系统工程师-计算机体系结构与流水线核心考点解析
数据库·软考·数据系统工程师
可观测性用观测云1 天前
KES(KingbaseES)数据库监控最佳实践
数据库
新缸中之脑1 天前
在Reddit上探索未满足的需求
数据库·oracle
安当加密1 天前
用 SMS 凭据管理系统替代 HashiCorp Vault:中小企业的轻量级 Secrets 管理实践
服务器·数据库·安全·阿里云