mysql支持哪些存储引擎_mysql存储引擎类型介绍

9次阅读

MySQL 默认存储引擎为 InnoDB,支持 ACID 事务、行级锁、外键及 MVCC;MyISAM 适用于读多写少场景,仅支持表锁和全文索引;MEMORY 引擎纯内存存储,重启丢失;ARCHIVE、CSV、FEDERATED、BLACKHOLE 用于归档、交换、远程访问或日志中继等特定用途。

mysql 支持哪些存储引擎_mysql 存储引擎类型介绍

MySQL 支持多种存储引擎,每种针对不同使用场景设计。当前主流版本(MySQL 5.5 及以后)默认使用 InnoDB,但你仍可按需为单个表指定其他引擎。

InnoDB:事务型应用的默认选择

它是 MySQL 的默认引擎,适用于绝大多数业务场景,尤其强调数据一致性与高并发写入。

  • 支持完整的 ACID 事务、崩溃自动恢复(通过 redo log)、行级锁和外键约束
  • 使用聚簇索引组织数据,主键即物理存储顺序;二级索引中包含主键值,因此主键不宜过大
  • 支持 MVCC(多版本并发控制),在 REPEATABLE-READ 隔离级别下可避免幻读
  • 适合电商订单、用户账户、金融 类等强一致性要求的系统

MyISAM:读多写少的轻量场景

虽已非默认,但在某些只读或低并发分析类场景仍有价值。

  • 不支持事务、外键和行锁,仅支持表级锁,高并发写入时易阻塞
  • 支持全文索引(FULLTEXT),适合简单 搜索引擎 或日志归档查询
  • 数据文件(.MYD)与索引文件(.MYI)分离,可单独优化存放路径
  • 适合报表缓存表、历史统计快照、静态配置表等读远大于写的场景

MEMORY(Heap):纯内存临时数据

所有数据驻留在内存中,速度极快,但服务重启即丢失。

  • 不支持事务,仅支持哈希索引(默认)或 B-Tree 索引(需显式声明)
  • 适合中间计算结果、会话缓存、临时 JOIN 表或快速去重临时表
  • 注意内存限制:表大小受 max_heap_table_size 参数控制,超限会报错

ARCHIVE 和其他辅助引擎

这些引擎面向特定目的,不用于主业务表。

  • ARCHIVE:高压缩比、仅支持 INSERT/SELECT,无索引,适合长期归档日志、审计记录
  • CSV:以文本 CSV 格式存数据,便于外部程序直接读取,但无事务、无索引、性能差
  • FEDERATED:不存数据,只代理访问远程 MySQL 表,依赖网络,不支持事务
  • BLACKHOLE:写入即丢弃,常用于复制拓扑中的“日志中继”或压力测试

查看当前支持的引擎可用 SHOW ENGINES;,查默认引擎用 SELECT @@default_storage_engine;。建表时加 ENGINE=InnoDB 显式指定,已有表可通过 ALTER TABLE t ENGINE=MyISAM; 修改。

text=ZqhQzanResources