存储引擎是Mysql的组件,用于处理Mysql不同类型的表操作。Innodb是默认的,最普遍的存储引擎,oracel建议建表时候建议使用除非有特殊需求(create table语法在Mysql5.7中默认创建的是一个Innodb引擎的表)
Mysql服务使用可拔插的存储引擎架构,可以灵活在一个运行的Mysql中进行加载和卸载存储引擎。
为了确定你的存储引擎能够支持的存储引擎,你能够使用 show engines语句进行查询。支持列中的值标识是否可以使用某个引擎,值为yes,no,default 表示这个引擎可用,不可用,默认可用。
ENGINE | SUPPORT | COMMENT | TRANSACTIONS | XA | SAVEPOINTS |
---|---|---|---|---|---|
Innodb | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
Mrg_Myisam | YES | Collection of identical Myisam tables | NO | NO | NO |
Memory | YES | Hash based, stored in Memory, useful for temporary tables | NO | NO | NO |
BLlackhole | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
Myisam | YES | Myisam storage engine | NO | NO | NO |
Csv | YES | Csv storage engine | NO | NO | NO |
Archive | YES | Archive storage engine | NO | NO | NO |
Performance_Schema | YES | Performance Schema | NO | NO | NO |
Federated | NO | Federated Mysql storage engine |
InnoDB
:: 是Mysql5.7默认的执行引擎,是一个事务安全(符合acid标准)存储引擎,有提交,回滚,容灾恢复的能力来保护用户数据。Innodb行锁(无需升级到更粗粒度锁)和oracle风格一只无锁定读取可以提高多用户性能。Innodb将用户数据存储在聚类索引中,以减少基于主键的普通查询的I/O。 为了维护数据完整性,Innodb 还支持 FOREIGN KEY 参考完整性约束。MyISAM
::这些表占用空间小。 表级锁定限制了读/写工作负载的性能,因此通常用于 Web 和数据仓库配置中的只读或最多读取的工作负载。Memory
:将所有数据存储在内存中,以便在需要快速查找非关键数据的环境中快速访问。 该引擎以前被称为 HEAP 引擎。 它的用例在不断减少;Innodb 及其缓冲池内存区域提供了一种通用而持久的方式,可将大部分或所有数据保存在内存中,而 NdbCLUSTER 则可为庞大的分布式数据集提供快速的键值查找。CSV
:它的表格实际上是用逗号分隔值的文本文件。 Csv 表允许你以 Csv 格式导入或转储数据,以便与读写相同格式的脚本和应用程序交换数据。 由于 Csv 表没有索引,因此在正常运行时,数据通常保存在 Innodb 表中,只有在导入或导出阶段才使用 Csv 表。Archive
:这些结构紧凑的非索引表用于存储和检索大量很少被引用的历史、存档或安全审计信息。Blackhole
:Blackhole 存储引擎接受但不存储数据,类似于 Unix /dev/null 设备。 查询总是返回空集。 这些表可用于复制配置,在这种配置中,DML 语句被发送到复制服务器,但源服务器并不保留自己的数据副本。NDB
:(又称 NdbCLUSTER): 这种集群数据库引擎特别适用于对正常运行时间和可用性要求最高的应用程序。Merge
: 使 Mysql DBA 或开发人员能够对一系列相同的 Myisam 表进行逻辑分组,并将它们作为一个对象引用。 适用于数据仓库等 VLDB 环境。Federated
: 提供连接独立 Mysql 服务器的功能,可从多个物理服务器创建一个逻辑数据库。 非常适合分布式或数据集市环境。Example
:该引擎是 Mysql 源代码中的一个示例,说明了如何开始编写新的存储引擎。 开发人员主要对它感兴趣。 存储引擎是一个什么都不做的 "存根"。 您可以使用该引擎创建表格,但不能在其中存储数据,也不能从中检索数据。在整个服务器或模式中使用相同的存储引擎并不受限制。 您可以为任何表指定存储引擎。 例如,应用程序可能主要使用 Innodb 表,还有一个 Csv 表用于将数据导出到电子表格,以及一些 Memory 表用于临时工作区。
Mysql 提供的各种存储引擎在设计时考虑了不同的使用情况。 下表概述了 Mysql 提供的一些存储引擎,表后附有说明。
Feature | Myisam | Memory | Innodb | Archive | Ndb |
---|---|---|---|---|---|
B-tree indexes | Yes | Yes | Yes | No | No |
Backup/point-in-time recovery (note 1) | Yes | Yes | Yes | Yes | Yes |
Cluster database support | No | No | No | No | Yes |
Clustered indexes | No | No | Yes | No | No |
Compressed data | Yes (note 2) | No | Yes | Yes | No |
Data caches | No | N/A | Yes | No | Yes |
Encrypted data | Yes (note 3) | Yes (note 3) | Yes (note 4) | Yes (note 3) | Yes (note 5) |
Foreign key support | No | No | Yes | No | Yes |
Full-text search indexes | Yes | No | Yes (note 6) | No | No |
Geospatial data type support | Yes | No | Yes | Yes | Yes |
Geospatial indexing support | Yes | No | Yes (note 7) | No | No |
Hash indexes | No | Yes | No (note 8) | No | Yes |
Index caches | Yes | N/A | Yes | No | Yes |
Locking granularity | Table | Table | Row | Row | Row |
MVCC | No | No | Yes | No | No |
Replication support (note 1) | Yes | Limited (note 9) | Yes | Yes | Yes |
Storage limits | 256TB | RAM | 64TB | None | 384EB |
T-tree indexes | No | No | No | No | Yes |
Transactions | No | No | Yes | No | Yes |
Update statistics for data dictionary | Yes | Yes | Yes | Yes | Yes |
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。