18.5 ARCHIVE 存储引擎
ARCHIVE 存储引擎生产特殊用途表,存储大量未索引数据在非常小的 footprint 中。
Table 18.5 ARCHIVE Storage Engine Features
| Feature | Support |
|---|---|
| B-tree 索引 | 否 |
| 备份/点时恢复 (在服务器中实现,而不是在存储引擎中。) | 是 |
| 集群数据库支持 | 否 |
| 聚簇索引 | 否 |
| 压缩数据 | 是 |
| 数据缓存 | 否 |
| 加密数据 | 是(在服务器中通过加密函数实现。) |
| 外键支持 | 否 |
| 全文搜索索引 | 否 |
| 地理数据类型支持 | 是 |
| 地理索引支持 | 否 |
| 哈希索引 | 否 |
| 索引缓存 | 否 |
| 锁定粒度 | 行 |
| MVCC | 否 |
| 复制支持(在服务器端实现,而不是在存储引擎中。) | 是 |
| 存储限制 | 无 |
| T树索引 | 否 |
| 事务 | 否 |
| 更新数据字典统计信息 | 是 |
ARCHIVE存储引擎在MySQL二进制发行版中包含。要在源代码中启用该存储引擎,使用CMake命令,并添加-DWITH_ARCHIVE_STORAGE_ENGINE选项。
要查看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 引擎使用无损数据压缩(见http://www.zlib.net/)。您可以使用OPTIMIZE TABLE 分析表并将其打包到更小的格式(用于使用OPTIMIZE TABLE,见本节后)。引擎还支持CHECK TABLE。有多种插入类型:
检索:在检索时,行将按需解压缩;没有行缓存。一个SELECT操作执行完整表扫描:当SELECT发生时,它找到当前可用的行数,然后读取该行数。SELECT以一致性读取方式执行。注意,在插入操作中,多个SELECT语句可能会降低压缩率,除非使用批量插入。要提高压缩率,可以使用OPTIMIZE TABLE或REPAIR TABLE。ARCHIVE表中的行数由SHOW TABLE STATUS准确报告。见第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中找到。