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

当前版本

MySQL 8.4版本一共提供10种存储引擎,详见官网。下面说几个常见和常用的引擎及其特点。

常用引擎

InnoDB

是MySQL的默认存储引擎 (MySQL 5.5.5之后)

特点:

  • 支持事务、外键、MVCC (多版本并发控制)
  • 使用聚簇索引 (聚集索引)
  • 使用数据缓存和索引缓存 (实现: Buffer pool)
  • 支持行级锁
  • 读写阻塞主要看事务隔离级别

MyISAM

是一个读性能比较好、存储限制更大的存储引擎

特点:

  • 不支持事务、外键和MVCC
  • 使用非聚簇索引
  • 使用索引缓存
  • 锁的粒度只到表级锁 (也就是说这个存储引擎加锁的话就是锁整表)
  • 读写相互阻塞 (因为表锁)

MEMORY

是把数据存储到内存中的存储引擎,数据库重启数据消失。

NDBCluster

支持高可用性和数据分布,适合大型分布式场景

特点:

  • 支持行级锁、自动分区