目录
-
文件系统存储特点
会缓存所有的写并且利用zlib对插入的行进行压缩,所以Archive搜索引擎比MyISAM存储引擎的表,更加节约磁盘I/O,对于同样数量级的数据,Archive存储引擎比MyISAM、InnoDB更加节约存储空间,一个NT的数据表数据存储到Archive存储引擎表中,可能只需要几百兆的存储空间就可以了;
Archive存储引擎数据文件都是ARZ为后缀文件,另外的和其他存储引擎一样,Archive存储引擎也存在一个以frm为后缀的文件,用于存储这种表的结构信息,这就是Archive存储引擎在文件系统中存储的一些特点。
-
Archive存储引擎特点
- 只支持insert和select操作【Archive存储引擎支持行级锁和专用的缓冲区,可以实现并发的插入,这种存储引擎在某些方面的模仿了事务存储引擎的一些特点,但是Archive本身并不是一种是事务的存储引擎】
- 只允许在自增的ID上加索引
-
Linux命令操作演示
创建myarchive表
- 有两点需要注意:
mysql> 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.00 sec # 1、建立的ID列是具有自增属性,在Mysql中自增的类都是要求在索引中的,建表的同时指定索引 # 2、利用engine指定存储类型
- 到文件系统中来看一下这个表的是如何存储的:
[root@localhost test]# ls -lh myarchive.* -rw-rw----. 1 mysql mysql 8.5K 2月 20 10:49 myarchive.ARZ -rw-rw----. 1 mysql mysql 8.5K 2月 20 10:49 myarchive.frm [root@localhost test]# # arz 存储数据 # frm 存储表结构
- 插入数据
mysql> insert into myarchive (c1,c2) values ('aa','bb'),('cc','dd'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from myarchive; +----+------+------+ | id | c1 | c2 | +----+------+------+ | 1 | aa | bb | | 2 | cc | dd | +----+------+------+ 2 rows in set (0.00 sec)
- 数据删除操作
mysql> delete from myarchive where id = 1; ERROR 1031 (HY000): Table storage engine for 'myarchive' doesn't have this option # 表示不支持删除
- 数据更新操作
mysql> update myarchive set c1='aaaa' where id =1; ERROR 1031 (HY000): Table storage engine for 'myarchive' doesn't have this option # 表示不支持更新
- 在非自增字段建立索引
mysql> create index idx_c1 on myarchive(c1); ERROR 1069 (42000): Too many keys specified; max 1 keys allowed # 只支持在自增ID建立索引
-
使用场景
是无法在OLTP类的应用中所使用的,因为它不支持对数据的修改,而OLTP中一定会对数据进行修改,对于一些数据仓库的应用,或者一些特殊的表,如:记录日志类的表或者数据采集的表,由于会要存储大量的数据,就比较适合Archive存储引擎,存储空间占用最小。
注意:即使是在日志采集和数据的应用中,Archive存储引擎也是无法进行数据的删除和更新的。