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中找到。