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
存储引擎是否可用。
创建ARCHIVE
table 时,服务器将在数据库目录中创建 table 格式文件。该文件以 table 名开头,extensions 为.frm
。存储引擎创建其他文件,所有文件的名称均以 table 名开头。数据文件的 extensions 为.ARZ
。 .ARN
文件可能在优化操作期间出现。
ARCHIVE
引擎支持INSERT,REPLACE和SELECT,但不支持DELETE或UPDATE。它确实支持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永远不会引起批量插入的刷新,除非在加载时发生普通插入。
检索 :检索时,按需解压缩行;没有行缓存。 SELECT操作执行完整的 table 扫描:发生SELECT时,它将找出当前可用的行数并读取该行数。 SELECT作为一致读取执行。请注意,除非仅使用批量插入或延迟插入,否则在插入过程中使用大量SELECT语句可能会使压缩性能恶化。为了获得更好的压缩效果,可以使用OPTIMIZE TABLE或REPAIR TABLE。 显示 table 格状态报告的ARCHIVE
table 中的行数始终准确。参见第 13.7.2.4 节“ OPTIMIZE TABLE 语句”,第 13.7.2.5 节“ REPAIR TABLE 语句”和第 13.7.5.36 节“ SHOW TABLE STATUS 语句”。
Additional Resources
- https://forums.mysql.com/list.php?112提供了一个专门讨论
ARCHIVE
存储引擎的论坛。