简介
存储引擎是 MySQL 组件,用于处理不同表类型的 SQL 操作。 InnoDB是默认和最通用的存储引擎,甲骨文建议将其用于表,但特殊使用案例除外。
一、查询服务器支持的存储引擎
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 3. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
二、常用数据库引擎类型
- InnoDB:
InnoDB是 MySQL 的事务安全(符合 ACID)存储引擎,具有提交、回滚和崩溃恢复功能来保护用户数据。 InnoDB行级锁定(不升级为更粗粒度的锁定)和 Oracle 风格的一致非锁定读取提高了多用户并发性和性能。InnoDB将用户数据存储在聚集索引中,以减少基于主键的常见查询的 I/O。为了维护数据完整性, InnoDB还支持FOREIGN KEY引用完整性约束。有关 的更多信息InnoDB,
- MyISAM
表级锁定 限制了读/写工作负载的性能,因此它通常用于 Web 和数据仓库配置中的只读或以读取为主的工作负载。
- Memory:
将所有数据存储在 RAM 中,以便在需要快速查找非关键数据的环境中进行快速访问。这种发动机以前称为HEAP发动机。它的用例正在减少;InnoDB其缓冲池内存区域提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,并 NDBCLUSTER为庞大的分布式数据集提供快速的键值查找。
- Archive:
没有索引的表用于存储和检索大量很少引用的历史、归档或安全审计信息。 - NDB (also known as NDBCLUSTER)
这种集群数据库引擎特别适合对正常运行时间和可用性要求尽可能高的应用程序。
注:不限制您对整个服务器或模式使用相同的存储引擎。您可以为任何表指定存储引擎。
三、数据库引擎比较
特征 | MyISAM | Memory | InnoDB | Archive | NDB |
B-tree 索引 | 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 |
更新数据字典的统计信息 | Yes | Yes | Yes | Yes | Yes |