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不支持