MySQL 的存储引擎有哪些?它们之间有什么区别?

Sherwin.Wei Lv7

MySQL 的存储引擎有哪些?它们之间有什么区别?

回答重点

MySQL 的主要存储引擎包括:

1)InnoDB(重点)

  • 支持事务、行级锁和外键。
  • 提供高并发性能,适用于高负载的 OLTP 应用。
  • 数据以聚集索引的方式存储,提高检索效率。

2)MyISAM(重点)

  • 不支持事务和外键,使用表级锁。
  • 适合读取多、更新少的场景,如数据仓库。
  • 具有较高的读性能和较快的表级锁定。

3)MEMORY

  • 数据存储在内存中,速度快,但数据在服务器重启后丢失。
  • 适用于临时数据存储或快速缓存。

4)NDB (NDBCluster):

  • 支持高可用性和数据分布,适合大规模分布式应用
  • 提供行级锁和自动分区。

5)ARCHIVE

  • 用于存储大量历史数据,支持高效的插入和压缩。
  • 不支持索引,适合日志数据存储。
特性 MyISAM Memory InnoDB Archive NDB
B+树索引 Yes Yes Yes No No
备份/按时间点恢复 Yes Yes Yes Yes Yes
集群数据库支持 No No No No Yes
聚簇索引 No No Yes No No
压缩数据 Yes No Yes Yes No
数据缓存 No N/A Yes No Yes
加密数据 Yes Yes Yes Yes Yes
外键支持 No No Yes No Yes
全文检索 Yes No Yes No No
地理空间数据类型支持 Yes No Yes Yes Yes
地理空间索引支持 Yes No Yes No No
哈希索引 No Yes No No Yes
索引缓存 Yes N/A Yes No Yes
锁的粒度 Table Table Row Row Row
MVCC No No Yes No No
复制支持 Yes Limited Yes Yes Yes
存储限制 256TB RAM 64TB None 384EB
T-tree 索引 No No No No Yes
事务 No No Yes No Yes

实际上我们仅需重点了解 InnoDB 和 MyISAM 即可,其它仅需有点印象即可。

扩展知识

MySQL 8.4 版本一共提供了 10 个引擎

有兴趣的小伙伴可以点击这里 ,访问官网查看其他引擎详细介绍。

image.png

扩展 MySQL 的 InnoDB 存储引擎和 MyISAM 存储引擎有何不同?

MySQL 中 InnoDB 存储引擎与 MyISAM 存储引擎的区别是什么?

Comments