MySQL 8.0 参考手册  / 第 16 章替代存储引擎  /  16.5 ARCHIVE存储引擎

16.5 ARCHIVE存储引擎

存储引擎生成专用表,ARCHIVE以非常小的占用空间存储大量未索引的数据。

表 16.5 ARCHIVE 存储引擎功能

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

存储引擎包含在ARCHIVEMySQL 二进制发行版中。如果您从源代码构建 MySQL,要启用此存储引擎,请使用该 选项 调用CMake 。-DWITH_ARCHIVE_STORAGE_ENGINE

要检查ARCHIVE引擎的源代码,请查看storage/archiveMySQL 源代码分发目录。

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

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

ARCHIVE引擎支持 , INSERT, REPLACESELECT,但不 支持DELETEor UPDATE。它确实支持 ORDER BY操作、 BLOB列和空间数据类型(请参阅第 11.4.1 节,“空间数据类型”)。不支持地理空间参考系统。该ARCHIVE 引擎使用行级锁定。

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

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

如果没有请求,引擎会忽略列,并在阅读时扫描 过去ARCHIVEBLOB

ARCHIVE存储引擎不支持分区 。

存储:行在插入时被压缩。该ARCHIVE引擎使用 zlib无损数据压缩(请参阅 http://www.zlib.net/)。您可以使用 OPTIMIZE TABLE来分析表格并将其打包成更小的格式(关于使用 的原因 OPTIMIZE TABLE,请参阅本节后面部分)。该引擎还支持CHECK TABLE. 使用了几种类型的插入:

  • 一条INSERT语句只是将行推入压缩缓冲区,并且该缓冲区会根据需要刷新。插入缓冲区受锁保护。ASELECT强制发生冲洗。

  • 批量插入只有在完成后才可见,除非同时发生其他插入,在这种情况下只能部分看到。ASELECT永远不会导致批量插入的刷新,除非在加载时发生正常插入。

检索:检索时,行按需解压缩;没有行缓存。一个 SELECT操作执行完整的表扫描:当一个操作SELECT发生时,它会找出当前有多少行可用并读取该行数。SELECT作为一致读取执行。请注意 SELECT,除非仅使用批量插入,否则插入期间的大量语句会降低压缩率。为了获得更好的压缩效果,您可以使用 OPTIMIZE TABLEREPAIR TABLEARCHIVE报告的表 中的行数 SHOW TABLE STATUS始终是准确的。参见第 13.7.3.4 节,“OPTIMIZE TABLE 语句”第 13.7.3.5 节,“REPAIR TABLE 语句”,以及 第 13.7.7.38 节,“显示表状态语句”

其他资源