相关的文档10bet官方网站 本手册下载 摘自本手册

MySQL 8.0参考手册/替代存储引擎

第十六章可替代的存储引擎

存储引擎是MySQL组件,用于处理不同表类型的SQL操作。InnoDB是默认的、最通用的存储引擎,Oracle建议除了特殊的用例外,将其用于表。(创建表在MySQL 8.0中创建InnoDB默认表。)

MySQL服务器使用可插拔的存储引擎架构,使存储引擎可以加载到运行中的MySQL服务器或从其卸载。

要确定您的服务器支持哪些存储引擎,请使用显示引擎声明。的价值支持列表示是否可以使用某个引擎。的值是的,没有,或默认的表示该引擎为可用、不可用或可用,且当前设置为默认存储引擎。

mysql >显示引擎\ G  *************************** 1。行  *************************** 引擎:PERFORMANCE_SCHEMA支持:是的评论:性能模式交易:没有XA:不保存点:不  *************************** 2。行  *************************** 引擎:InnoDB支持:默认评论:支持事务,行级锁,和外键事务:是的XA:是的保存点:是的  *************************** 3所示。行  *************************** 引擎:MRG_MYISAM支持:是的评论:收集相同的MyISAM表事务:没有XA:不保存点:不  *************************** 4所示。行  *************************** 引擎:黑洞支持:是的评论:/ dev / null存储引擎(任何你写它消失了)交易:没有XA:不保存点:不  *************************** 5。row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage Engine Transactions: NO XA: NO Savepoints: NO…

本章涵盖了特殊用途的MySQL存储引擎的用例。它不包括默认值InnoDB存储引擎或NDB存储引擎第15章,InnoDB存储引擎23章,MySQL NDB Cluster 8.0。对于高级用户,它还包含可插拔存储引擎架构的描述(请参阅第16.11节“MySQL存储引擎架构概述”)。

有关商业MySQL服务器二进制文件中提供的特性的信息,请参阅MySQL版本,在MySQL网站上。可用的存储引擎可能取决于您使用的MySQL版本。

有关MySQL存储引擎的常见问题的答案,请参见Section A.2“MySQL 8.0 FAQ: Storage Engines”

MySQL 8.0支持的存储引擎

  • InnoDB: MySQL 8.0默认的存储引擎。InnoDB是一个事务安全(符合ACID)的MySQL存储引擎,具有提交、回滚和崩溃恢复功能,以保护用户数据。InnoDB行级锁定(没有升级为更粗粒度的锁)和oracle风格的一致性非锁定读取提高了多用户并发性和性能。InnoDB将用户数据存储在聚集索引中,以减少基于主键的常见查询的I/O。为了保持数据的完整性,InnoDB还支持外键引用完整性约束。欲了解更多关于InnoDB,请参阅第15章,InnoDB存储引擎

  • MyISAM例如这些桌子占用空间小。表级锁限制了读/写工作负载中的性能,因此它经常用于Web和数据仓库配置中的只读或以读为主的工作负载。

  • 内存:将所有数据存储在RAM中,以便在需要快速查找非关键数据的环境中快速访问。这种发动机以前被称为引擎。它的用例正在减少;InnoDB通过它的缓冲池,内存区域提供了一种通用且持久的方法来将大部分或所有数据保存在内存中NDBCLUSTER为庞大的分布式数据集提供快速的键值查找。

  • CSV:它的表实际上是带有逗号分隔值的文本文件。CSV表允许您以CSV格式导入或转储数据,以便与读写相同格式的脚本和应用程序交换数据。因为CSV表没有索引,所以通常会将数据保存在其中InnoDB正常操作时使用表格,仅在导入或导出阶段使用CSV表格。

  • 存档:这些紧凑的、没有索引的表用于存储和检索大量很少引用的历史、归档或安全审计信息。

  • 黑洞:与Unix类似,黑洞存储引擎只接受数据,不存储数据/ dev / null设备。查询总是返回一个空集。这些表可用于复制配置,其中DML语句被发送到复制服务器,但源服务器不保留自己的数据副本。

  • NDB(也称为NDBCLUSTER):这种集群数据库引擎特别适合于需要最高程度的正常运行时间和可用性的应用程序。

  • 合并:允许MySQL DBA或开发人员在逻辑上对一系列相同的数据进行分组MyISAM表并作为一个对象引用它们。适合于VLDB环境,比如数据仓库。

  • 联邦:提供连接独立的MySQL服务器的能力,从许多物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境。

  • 例子:这个引擎是MySQL源代码中的一个例子,它演示了如何开始编写新的存储引擎。它主要是开发人员感兴趣的。存储引擎为a存根什么也不做。您可以使用这个引擎创建表,但是不能在表中存储数据,也不能从表中检索数据。

您不必局限于对整个服务器或架构使用相同的存储引擎。您可以为任何表指定存储引擎。例如,应用程序可能使用最多InnoDB表,用一个CSV表格用于导出数据到电子表格和一些内存临时工作区的表。

选择存储引擎

MySQL提供的各种存储引擎是根据不同的用例设计的。下表概述了MySQL提供的一些存储引擎,下表澄清了一些注意事项。

表16.1存储引擎特性概述

功能 MyISAM 内存 InnoDB 存档 NDB
b -树索引 是的 是的 是的 没有 没有
备份/时间点恢复(注1) 是的 是的 是的 是的 是的
集群数据库支持 没有 没有 没有 没有 是的
聚集索引 没有 没有 是的 没有 没有
压缩数据 是的(注2) 没有 是的 是的 没有
数据缓存 没有 N/A 是的 没有 是的
加密的数据 是的(注3) 是的(注3) 是的(注4) 是的(注3) 是的(注3)
外键的支持 没有 没有 是的 没有 是的(注5)
全文搜索索引 是的 没有 是的(注6) 没有 没有
地理空间数据类型支持 是的 没有 是的 是的 是的
地理空间索引支持 是的 没有 是的(注7) 没有 没有
散列索引 没有 是的 没有(注8) 没有 是的
索引缓存 是的 N/A 是的 没有 是的
锁的粒度 表格 表格
MVCC 没有 没有 是的 没有 没有
复制支持(注1) 是的 有限公司(注9) 是的 是的 是的
存储限制 256年结核病 内存 64年结核病 没有一个 384年海尔哥哥
-树索引 没有 没有 没有 没有 是的
交易 没有 没有 是的 没有 是的
更新数据字典的统计信息 是的 是的 是的 是的 是的

注:

1.在服务器中实现,而不是在存储引擎中。

2.只有使用压缩行格式时,才支持压缩的MyISAM表。使用MyISAM压缩行格式的表是只读的。

3.在服务器端通过加密功能实现。

4.在服务器端通过加密功能实现;在MySQL 5.7和更高版本中,支持数据静止加密。

5.在MySQL集群NDB 7.3和更高版本中支持外键。

6.在MySQL 5.6和更高版本中支持全文索引。

7.MySQL 5.7和更高版本中提供了对地理空间索引的支持。

8.InnoDB内部利用哈希索引来实现自适应哈希索引特性。

9.请参阅本节后面的讨论。