- 存储引擎是处理不同表类型的SQL操作的MySQL组件。InnoDB是默认且最通用的存储引擎。(MySQL 8.0中的CREATE TABLE语句默认创建InnoDB表。)
- 确定您的服务器支持哪些存储引擎,使用SHOW ENGINES语句。Support列中的值表示是否可以使用引擎。
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
...
MySQL 8.0支持的存储引擎列表如下
- InnoDB:MySQL 8.0中的默认存储引擎。InnoDB 是用于 MySQL 的事务安全(符合 ACID)存储引擎,具有提交、回滚和崩溃恢复功能来保护用户数据。InnoDB 行级锁定(不升级到更粗粒度的锁定)和Oracle风格的一致非锁定读取提高了多用户并发性和性能。InnoDB将用户数据存储在聚集索引中,以减少基于主键的常见查询的I/O。为了维护数据完整性,InnoDB还支持FOREIGN KEY(外键)引用完整性约束。
- MyISAM:表占用空间很小。表级锁定限制了read/write工作负载的性能,因此它通常用于Web和数据仓库配置中的只读或以读取为主的工作负载。
- Example:将所有数据存储在RAM中,以便在需要快速查找非关键数据的环境中快速访问。该引擎以前称为HEAP引擎。它的使用场景正在减少;InnoDB及其缓冲池内存区域提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,而NDBCLUSTER(NDB)为庞大的分布式数据集提供了快速的键值查找。
- CSV:实际上是具有逗号分隔值的文本文件。CSV表允许您以CSV格式导入或转储数据,以便与读取和写入相同格式的脚本和应用程序交换数据。由于CSV表没有索引,因此通常在正常操作期间将数据保留在InnoDB表中,并且仅在导入或导出阶段使用CSV表。
- Archive:紧凑的未索引的表旨在存储和检索大量很少引用的历史、存档或安全审计信息。
- Blackhole:接受但不存储数据,类似于Unix的/dev/null设备。查询总是返回一个空集。这些表可用于复制配置,其中DML语句被发送到副本服务器,但源服务器不保留自己的数据副本。
- NDB(也称为 NDBCLUSTER):此集群数据库引擎特别适用于需要尽可能高的正常运行时间和可用性的应用程序。
- Merge:方便MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB环境,例如数据仓库。
- Federated:提供链接单独的MySQL服务器,从许多物理服务器创建一个逻辑数据库的能力。非常适合分布式或数据集市的环境。
- Example:为MySQL源代码中的示例,说明了如何开始编写新的存储引擎。它主要是开发人员感兴趣的。存储引擎是一个什么都不做的“存根”。您可以使用此引擎创建表,但无法在其中存储或检索任何数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。