1. MySQL的支持的存储引擎有哪些
官方文档给出的有以下几种:

我们也可以通过SHOW ENGINES命令来查看:

还可以通过ENGINES表查看

2. 存储引擎比较

我们通过存储引擎表来看各自的优点:
InnoDB
- 默认的存储引擎(SUPPORT字段为DEFAULT)
- Supports transactions(支持事务), row-level locking(行级别锁), and foreign keys(外键)
- 支持分布式事务协议(XA),二阶段提交

MEMORY
1.Hash based 使用哈希存储
2.stored in memory 存储在内存中
3.useful for temporary tables 使用临时表空间
MyISAM
表锁

适用只读场景
详细比较:
| 特征 | MyISAM | Memory | InnoDB | Archive | NDB |
|---|---|---|---|---|---|
| B树索引 | 支持 | 支持 | 支持 | 支持 | 不支持 |
| 备份/时间点恢复 | 支持 | 支持 | 支持 | 支持 | 支持 |
| 集群支持 | 不支持 | 不支持 | 不支持 | 不支持 | 支持 |
| 聚簇索引 | 无 | 无 | 有 | 无 | 无 |
| 压缩数据 | 支持(仅当使用压缩行格式时,才支持压缩的 MyISAM 表。使用 MyISAM 的压缩行格式的表是只读的。) | 不支持 | 支持 | 支持 | 不支持 |
| 数据缓存 | 没有 | 有 | 没有 | 有 | |
| 加密数据 | 支持(加密功能在服务器中实现) | 支持(加密功能在服务器中实现) | 支持(加密功能在服务器中实现;在 MySQL 5.7 及更高版本中,支持静态数据加密。) | 支持(加密功能在服务器中实现) | 支持(加密功能在服务器中实现;自 NDB 8.0.22 起加密的 NDB 备份;NDB 8.0.29及更高版本支持透明NDB文件系统加密。) |
| 外键支持 | 不支持 | 不支持 | 支持 | 不支持 | 支持 |
| 全文搜索索引 | 支持 | 不支持 | 支持(MySQL 5.6 及更高版本中提供了对 FULLTEXT 索引的支持。) | 不支持 | 不支持 |
| 地理空间数据类型支持 | 支持 | 不支持 | 支持 | 支持 | 支持 |
| 地理空间索引支持 | 支持 | 不支持 | 支持(MySQL 5.7 及更高版本支持地理空间索引。) | 不支持 | 不支持 |
| 哈希索引 | 不支持 | 支持 | 不支持( InnoDB 在内部利用哈希索引来实现其自适应哈希索引功能。) | 不支持 | 支持 |
| 索引缓存 | 支持 | 支持 | 不支持 | 不支持 | |
| 锁定粒度 | 表级别 | 表级别 | 行级别 | 行级别 | 行级别 |
| MVCC | 不支持 | 不支持 | 支持 | 不支持 | 不支持 |
| 主从复制 | 支持 | 支持 | 支持 | 支持 | |
| 存储限制 | 256TB | RAM | 64TB | ||
| T 树索引 | 不支持 | 不支持 | 不支持 | 不支持 | 支持 |
| 事务 | 不支持 | 不支持 | 支持 | 不支持 | 支持 |
| 更新数据字典的统计信息 | 支持 | 支持 | 支持 | 支持 | 支持 |
InnoDB和MyISAM比较
- InnoDB支持事务,MyISAM不支持
- InnoDB支持行锁(针对的是索引),MyISAM是行锁
- InnoDB支持外键,MyISAM不支持
- InnoDB支持MVCC,MyISAM不支持