MYSQL Archive存储引擎

MySQL的Archive存储引擎主要用于归档大量历史数据,它支持快速插入和查询,且数据经过压缩,占用空间小。Archive表不支持更新和删除操作,适用于数据仓库、日志记录等场景。当数据量大时,其性能可能超过MyISAM。在数据迁移时,仅需复制底层文件即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

archive储存引擎的应用场景就是它的名字的缩影,主要用于归档。archive储存引擎仅支持select和insert,最出众的是插入快,查询快,占用空间小。例如我们有大量的历史数据极少访问又不能删除,需要保存,那么它是非常不错的选择。archive最出名的就是压缩,它的引擎使用zlib无损数据压缩算法,压缩率非常好,这里测试下效果。

根据英文的测试结论来看,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。当数据量非常大的时候Archive的插入性能表现会较MyISAM为佳。

Archive表的性能是否可能超过MyISAM?答案是肯定的。根据MySQL工程师的资料,当表内的数据达到1.5GB这个量级,CPU又比较快的时候,Archive表的执行性能就会超越MyISAM表。因为这个时候,CPU会取代I/O子系统成为性能瓶颈。别忘了Archive表比其他任何类型的表执行的物理I/O操作都要少。

较小的空间占用也能在你移植MySQL数据的时候发挥作用。当你需要把数据从一台MySQL服务器转移到另一台的时候,Archive表可以方便地移植到新的MySQL环境,你只需将保存Archive表的底层文件复制过去就可以了。

文件系统存储特性

  •     以zlib对表数据进行压缩,磁盘I/O更少(几Tinnodb表在archive中只需要几百兆)
  •     数据存储在.ARZ为后缀的文件中
  •     .frm文件

功能特点

  • 只支持insert、replace和select
  • 支持行级锁和专用的缓存区,可实现高并发
  • 只允许在自增ID列上加索引
  • 支持分区,不支持事务处理

建立一张表

MySQL [test]> create  table myarchive( id int auto_increment not null , c1  varchar(10),c2  char(10),key(id)) engine = archive;
Query OK, 0 rows affected (0.06 sec)

插入和查询数据

MySQL [test]> insert into myarchive (c1,c2) values ('aa','bb'),('cc','dd');
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0

MySQL [test]> select * from myarchive;
+----+------+------+
| id | c1   | c2   |
+----+------+------+
|  1 | aa   | bb   |
|  2 | cc   | dd   |
+----+------+------+
2 rows in set (0.01 sec)

我们看到可以进行查询操作,现在看是否可以进行删除操作。

MySQL [test]> delete from myarchive where id = 1;
ERROR 1031 (HY000): Table storage engine for 'myarchive' doesn't have this option

更新操作

MySQL [test]> update myarchive  set c1='aaaa' where id =1;
ERROR 1031 (HY000): Table storage engine for 'myarchive' doesn't have this option

我们接着查看是否可以在非自增键上创建索引

MySQL [test]> create index idx_c1 on myarchive(c1); 
ERROR 1069 (42000): Too many keys specified; max 1 keys allowed

使用场景
是无法在OLTP类的应用中所使用的,因为它不支持对数据的修改,而OLTP中一定会对数据进行修改,对于一些数据仓库的应用,或者一些特殊的表,如:记录日志类的表或者数据采集的表,由于会要存储大量的数据,就比较适合Archive存储引擎,存储空间占用最小。

注意:即使是在日志采集和数据的应用中,Archive存储引擎也是无法进行数据的删除和更新的。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值