面试
存储引擎就是 MySQL真正负责存、读、改磁盘数据的底层工具。
MySQL 只是一个外壳(负责接收 SQL、解析语句),实际读写硬盘的数据全靠存储引擎干活。
99%的业务场景直接用InnoDB 就完事了。MySQL 5.5 之后 InnoDB 就是默认引擎,官方也一直在优化它,全文索引、空间 索引这些原来 MyISAM 有的能力,InnoDB 现在也支持了。 只有几种特殊场景才考虑其他引擎:
1)临时计算结果集,比如 ETL中间表,可以用 MEMORY 引擎加速,但要注意数据易失性。
2)日志归档、历史流水这种只写不改的数据,Archive 引擎压缩率高,能省不少磁盘。
3) 搞 MySQL Cluster 分布式集群,才会用到 NDB。
MyISAM 基本可以淘汰了,MySQL 8.0已经把系统表从 MyISAM 迁移到 InnoDB 了,官方的态度很明确。