15.5 ARCHIVE 存储引擎

ARCHIVE存储引擎生成专用 table,这些 table 以很小的空间存储大量未索引的数据。

table15.5 ARCHIVE 存储引擎功能

Feature Support
B-tree indexes No
备份/时间点恢复 (在服务器中而不是在存储引擎中实现.) Yes
集群数据库支持 No
Clustered indexes No
Compressed data Yes
Data caches No
Encrypted data 是(通过加密功能在服务器中实现.)
外键支持 No
全文搜索索引 No
地理空间数据类型支持 Yes
地理空间索引支持 No
Hash indexes No
Index caches No
Locking granularity Row
MVCC No
复制支持 (在服务器中而不是在存储引擎中实现.) Yes
Storage limits None
T-tree indexes No
Transactions No
更新数据字典的统计信息 Yes

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

要检查ARCHIVE引擎的源,请查看 MySQL 源分发的storage/archive目录。

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

创建ARCHIVEtable 时,服务器将在数据库目录中创建 table 格式文件。该文件以 table 名开头,extensions 为.frm。存储引擎创建其他文件,所有文件的名称均以 table 名开头。数据文件的 extensions 为.ARZ.ARN文件可能在优化操作期间出现。

ARCHIVE引擎支持INSERTREPLACESELECT,但不支持DELETEUPDATE。它确实支持ORDER BY操作,BLOB列以及基本上所有的数据类型,包括空间数据类型(请参见第 11.4.1 节“空间数据类型”)。不支持地理空间参考系统。 ARCHIVE引擎使用行级锁定。

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

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

如果不要求BLOB列,则ARCHIVE引擎将忽略它们,并在读取时扫描经过它们。

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

检索 :检索时,按需解压缩行;没有行缓存。 SELECT操作执行完整的 table 扫描:发生SELECT时,它将找出当前可用的行数并读取该行数。 SELECT作为一致读取执行。请注意,除非仅使用批量插入或延迟插入,否则在插入过程中使用大量SELECT语句可能会使压缩性能恶化。为了获得更好的压缩效果,可以使用OPTIMIZE TABLEREPAIR TABLE显示 table 格状态报告的ARCHIVEtable 中的行数始终准确。参见第 13.7.2.4 节“ OPTIMIZE TABLE 语句”第 13.7.2.5 节“ REPAIR TABLE 语句”第 13.7.5.36 节“ SHOW TABLE STATUS 语句”

Additional Resources

首页