This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-26. For the latest, interactive version please visit https://mariadb.com/kb/.

Archive

ARCHIVE 存储引擎是一种使用 gzip 来压缩行的存储引擎。它主要用于存储大量的数据,没有索引,只有非常小的占用空间。

使用 ARCHIVE 存储引擎的表在磁盘上存储为两个文件。一个是扩展名为 .frm 的表定义文件,另一个是扩展名为 .ARZ 的数据文件。在优化过程中,有时会出现一个 .ARN 文件。

新行插入到压缩缓冲区中,并在需要时刷新到磁盘。SELECT 语句会导致刷新。有时,由多行插入创建的行在语句完成之前是不可见的。

ARCHIVE 允许最多一个键。该键必须在一个 AUTO_INCREMENT 列上,并且可以是 PRIMARY KEY 或非唯一键。但是,它有一个限制:不可能插入低于下一个 AUTO_INCREMENT 值的值。

安装插件

虽然插件的共享库默认情况下随 MariaDB 分发,但 MariaDB 实际上并没有默认安装该插件。有两种方法可以使用 MariaDB 安装插件。

第一种方法可以在不重启服务器的情况下安装插件。您可以通过执行 INSTALL SONAMEINSTALL PLUGIN 来动态安装插件。例如:

INSTALL SONAME 'ha_archive';

第二种方法可以用来告诉服务器在启动时加载插件。可以通过提供 --plugin-load--plugin-load-add 选项来安装此插件。这可以作为命令行参数指定给 mysqld,也可以在相关服务器 option group 中的 option file 中指定。例如:

[mariadb]
...
plugin_load_add = ha_archive

卸载插件

您可以通过执行 UNINSTALL SONAMEUNINSTALL PLUGIN 来动态卸载插件。例如:

UNINSTALL SONAME 'ha_archive';

如果您通过在相关服务器选项组中的选项文件中提供--plugin-load--plugin-load-add选项来安装插件,则应删除这些选项,以防止在下次重新启动服务器时加载插件。

特点

  • 支持INSERTSELECT,但不支持DELETE,UPDATEREPLACE
  • 在插入时使用zlib压缩数据,使其非常小。
  • 数据选择速度较慢,因为需要解压缩,除了查询缓存之外,没有缓存。
  • 支持AUTO_INCREMENT(自MariaDB / MySQL 5.1.6起),可以是唯一或非唯一索引。
  • 自MariaDB / MySQL 5.1.6以来,选择会扫描BLOB列,除非它们被明确请求,从而使这些查询更加高效。
  • 不支持spatial数据类型。
  • 不支持事务
  • 不支持外键。
  • 不支持虚拟列
  • 没有存储限制。
  • 支持行锁定。
  • 支持表发现,即使相应的.frm文件丢失,服务器也可以访问ARCHIVE表。
  • OPTIMIZE TABLEREPAIR TABLE可用于压缩整个表,从而实现稍微更好的压缩。
  • 在MariaDB中,可以升级到MySQL 5.0格式,而无需转储表。
  • 支持INSERT DELAYED
  • 在插入期间运行多个SELECT可能会破坏压缩,除非仅使用多行INSERT和INSERT DELAYED。
  • No items found.
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.