ARCHIVE
存储引擎生成用于以极小空间存储大量未索引数据的特殊用途表。
表 18.5 ARCHIVE 存储引擎功能
功能 | 支持 |
---|---|
B 树索引 | 否 |
备份/时间点恢复(在服务器中实现,而不是在存储引擎中。) | 是 |
集群数据库支持 | 否 |
聚集索引 | 否 |
压缩数据 | 是 |
数据缓存 | 否 |
加密数据 | 是(通过加密函数在服务器中实现。) |
外键支持 | 否 |
全文搜索索引 | 否 |
地理空间数据类型支持 | 是 |
地理空间索引支持 | 否 |
哈希索引 | 否 |
索引缓存 | 否 |
锁定粒度 | 行 |
MVCC | 否 |
复制支持(在服务器中实现,而不是在存储引擎中。) | 是 |
存储限制 | 无 |
T 树索引 | 否 |
事务 | 否 |
更新数据字典的统计信息 | 是 |
ARCHIVE
存储引擎包含在 MySQL 二进制发行版中。如果从源代码构建 MySQL,要启用此存储引擎,请使用 -DWITH_ARCHIVE_STORAGE_ENGINE
选项调用 CMake。
要检查 ARCHIVE
引擎的源代码,请查看 MySQL 源代码发行版中的 storage/archive
目录。
可以使用 SHOW ENGINES
语句检查 ARCHIVE
存储引擎是否可用。
创建 ARCHIVE
表时,存储引擎会创建以表名开头的文件。数据文件扩展名为 .ARZ
。在优化操作期间可能会出现 .ARN
文件。
ARCHIVE
引擎支持 INSERT
、REPLACE
和 SELECT
,但不支持 DELETE
或 UPDATE
。它支持 ORDER BY
操作、BLOB
列和空间数据类型(请参见 第 13.4.1 节,“空间数据类型”)。不支持地理空间参考系。 ARCHIVE
引擎使用行级锁定。
ARCHIVE
引擎支持 AUTO_INCREMENT
列属性。 AUTO_INCREMENT
列可以具有唯一索引或非唯一索引。尝试对任何其他列创建索引会导致错误。 ARCHIVE
引擎还支持 CREATE TABLE
语句中的 AUTO_INCREMENT
表选项,分别用于为新表指定初始序列值或重置现有表的序列值。
ARCHIVE
不支持将值插入到小于当前最大列值的 AUTO_INCREMENT
列中。尝试这样做会导致 ER_DUP_KEY
错误。
ARCHIVE
引擎会忽略未请求的 BLOB
列,并在读取时跳过它们。
ARCHIVE
存储引擎不支持分区。
存储:行在插入时会被压缩。 ARCHIVE
引擎使用 zlib
无损数据压缩(请参见 http://www.zlib.net/)。可以使用 OPTIMIZE TABLE
分析表并将其打包成更小的格式(有关使用 OPTIMIZE TABLE
的原因,请参见本节后面的内容)。该引擎还支持 CHECK TABLE
。有几种类型的插入被使用
检索:检索时,行会按需解压缩;没有行缓存。 SELECT
操作会执行完整的表扫描:当发生 SELECT
时,它会找出当前有多少行可用,并读取这些行。 SELECT
作为一致读取执行。请注意,在插入过程中大量使用 SELECT
语句会降低压缩效率,除非只使用批量插入。为了获得更好的压缩,可以使用 OPTIMIZE TABLE
或 REPAIR TABLE
。 SHOW TABLE STATUS
报告的 ARCHIVE
表中的行数始终准确。请参见 第 15.7.3.4 节,“OPTIMIZE TABLE 语句”、第 15.7.3.5 节,“REPAIR TABLE 语句” 和 第 15.7.7.37 节,“SHOW TABLE STATUS 语句”。
其他资源
一个专门针对
ARCHIVE
存储引擎的论坛,可在 https://forums.mysql.com/list.php?112 获得。