Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  Alternative Storage Engines  /  The ARCHIVE Storage Engine

18.5 ARCHIVE存储引擎

ARCHIVE存储引擎产生特殊用途的表,用于存储大量未索引数据,占用非常小的存储空间。

表 18.5 ARCHIVE存储引擎功能

功能 支持
B树索引
备份/点时间恢复 (在服务器中实现,而不是在存储引擎中。)
集群数据库支持
聚簇索引
压缩数据
数据缓存
加密数据 是 (在服务器中通过加密函数实现。)
外键支持
全文搜索索引
地理空间数据类型支持
地理空间索引支持
哈希索引
索引缓存
锁定粒度
MVCC
复制支持 (在服务器中实现,而不是在存储引擎中。)
存储限制
T树索引
事务
更新数据字典统计信息

ARCHIVE存储引擎包含在MySQL二进制分布中。要在从源代码构建MySQL时启用此存储引擎,请使用 CMake 选项 -DWITH_ARCHIVE_STORAGE_ENGINE

要检查ARCHIVE引擎的源代码,请查看MySQL源代码分布中的 storage/archive 目录。

您可以使用 SHOW ENGINES 语句来检查ARCHIVE存储引擎是否可用。

当您创建一个 ARCHIVE 表时,存储引擎将创建以表名开头的文件。数据文件的扩展名为 .ARZ。在优化操作期间可能会出现 .ARN 文件。

ARCHIVE 引擎支持 INSERTREPLACESELECT,但不支持 DELETEUPDATE。它支持 ORDER BY 操作、BLOB 列和空间数据类型(见 第 13.4.1 节,“空间数据类型”)。地理空间参考系统不受支持。ARCHIVE 引擎使用行级锁定。

ARCHIVE 引擎支持 AUTO_INCREMENT 列属性。AUTO_INCREMENT 列可以具有唯一或非唯一索引。尝试在其他列上创建索引将导致错误。ARCHIVE 引擎还支持 AUTO_INCREMENT 表选项在 CREATE TABLE 语句中,以指定新表的初始序列值或重置现有表的序列值。

ARCHIVE 不支持将值插入 AUTO_INCREMENT 列中,该值小于当前最大列值。尝试这样做将导致 ER_DUP_KEY 错误。

ARCHIVE 引擎忽略 BLOB 列,除非它们被请求,并在读取时跳过它们。

ARCHIVE 存储引擎不支持分区。

存储: 行在插入时被压缩。ARCHIVE 引擎使用 zlib 无损数据压缩(见 http://www.zlib.net/)。您可以使用 OPTIMIZE TABLE 分析表并将其压缩到较小的格式中(有关使用 OPTIMIZE TABLE 的原因,请参见本节后面的内容)。引擎还支持 CHECK TABLE。有多种类型的插入操作被使用:

  • 一个 插入 语句只是将行推送到压缩缓冲区,并在必要时刷新该缓冲区。插入缓冲区是受锁保护的。一个 选择 强制刷新的发生。

  • 批量插入仅在完成后可见,除非同时发生其他插入,在这种情况下可以部分看到。一个 选择 从不导致批量插入的刷新,除非在加载时发生正常插入。

检索:在检索时,行按需解压缩;没有行缓存。一个 选择 操作执行完整的表扫描:当 选择 发生时,它会找到当前可用的行数并读取该数量的行。选择 作为一致读取执行。注意,在插入期间执行许多 选择 语句可能会恶化压缩,除非仅使用批量插入。要实现更好的压缩,可以使用 优化表修复表。在 ARCHIVE 表中报告的行数由 显示表状态 始终准确。见 第 15.7.3.4 节,“优化表语句”第 15.7.3.5 节,“修复表语句”第 15.7.7.40 节,“显示表状态语句”

附加资源