MySQL常用存储引擎之Archive

现在我们来看看另外一种存储引擎,Archive存储引擎,Archive会缓存所有的写,并且利用对插入的行进行压缩,

所以Archive存储引擎比MYISAM的表更加节约磁盘的IO,对于同样数量级的数据,Archive比MYISAM,Innodb更加节省

磁盘空间,如果把数据存储到Archive存储引擎中呢,可能只需要几百兆的存储空间,就可以了,Archive存储的表呢,

文件是以ARZ为后缀的文件,另外和其他存储引擎一样,Archive存储引擎呢,也存在一个以frm为后缀的文件,用于

存储这种表的结构信息,这就是Archive在文件系统中,存储的一些特点,那我们接下来看看存储引擎在功能上有哪些特点

首先和MYISAM,Innodb最大的不同在于,Archive支持insert和select操作,Archive存储引擎支持行级锁,

和缓冲区,所以可以实现高并发的插入,这种存储引擎在某些方面,模仿了事务引擎的一些特点,但是Archive本身

并不是一个事务的存储引擎,这个存储引擎的第二个特点呢,只支持在自增ID列上建立的索引,而无法在其他列上

建立的索引,下面我们你还是回到我们的演示系统中,来看一下Archive存储引擎的具体表现,我们切换到我们的演示

系统中

同样我们还是要建立一个Archive表,表名就以myarchive命名吧,首先我们要加入一列id列,这个id列是具有自增属性的,

我们前面说到了,它是可以在自增列上来建立索引的,所以我们要来验证这一点,另外还有一个c1列,它是varchar的这个列,

还有一个c2列,这个列是char的列,同时我要指定他的索引,是id,并且我们使用的是Archive存储引擎,这个时候我们就完成了

表的建立工作

create table myarchive(id int auto_increment not null,c1 varchar(10),c2 char(10),key(id)) 

engine=archive;

这里我们有两点需要注意,其实刚才已经说过了,第一种就是我们建立的id列,这一列是有自增属性的,而在

MYSQL的create语句中呢,自增的列都是需要写在索引中的,所以我们在建表的同时呢,指定了我们的索引,

另外呢存储引擎呢,是Archive存储引擎,我们已经指定了存储引擎的类型,建立好这个表之后呢,我们可以先看

一下这个表是如何存储的,我们可以看到,以myarchive为开头的文件有哪些呢

ls -lh myarchive.*

一共只有两个,这跟我们刚才的想法是一样的,首先一个是以ARZ为结尾的文件呢,这个用来存储数据的一个文件,

除了ARZ文件呢,另一个文件就是frm文件,这个文件之前已经说了很多次了,就是MYSQL服务器层用于存储表结构的

文件,下面我们再来看一下,Archive存储引擎功能上的一些特点,首先我们向这个表中插入一些数据,然后可以看

是否对这些数据进行一些更新操作,删除操作,首先我们随便来插入一些数据吧,那就是c1,c2两列,这个数据随便写

就好了,我们已经给这个表插入了两列数据

insert into myarchive(c1,c2) values('aa','bb'),('cc','dd');

我们对这个数据进行删除操作,看看是否可以达到我们的目的,大家可以看到,我们在删除这个表中的

一列数据时呢,他返回了一个1031的错误,说明这个表是不支持这种操作的

同样更新操作我们也要试一下,同样也会返回相同的错误

update myarchive set c1='aaaa' where id = 1;

这就验证了我们之前所说的,只支持insert和select操作,而对于更新和删除操作呢,它是不支持的,

那我们接下来看看他的另外一个特点就是,同样也返回1069的错误

create index idx_c1 on myarchive(c1);

这里对Archive引擎的功能的分析和演示呢,我们可以看一下适用的一些场景,我们可以知道,Achive存储引擎呢,

是无法在OLTP应用中使用的,他不支持对数据的修改,而我们OLTP中,一定会对数据进行修改的,但是对于数据仓库的

应用呢,或者一些特殊的表还是有用的,记录日志的表,或者日志采集类的表,由于这种表要存储大量的数据,所以就比较

适用于Archive存储引擎,Archive存储引擎在所有引擎中是占用最少的,但是还是要注意,即使是在日志采集和数据应用

中呢,Archive引擎也是无法对数据进行删除和更新的,所以在记录日志,我们同样要对数据进行修改的话,可能也无法使用

Archive存储引擎

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值