archive存储引擎一般情况下不会引起人的注意。
本文阐述下archive的几个特性:
1.  只支持insert和select操作
2.  5.1之前不支持索引,到5.1才支持索引
3.  压缩比率非常高,一般认为1:10
4.  锁机制虽然为行锁,但是本身并不支持事务,设计的目的是为了提供高速的插入和索引功能!
5.  支持的索引,仅仅为auto_increment!即仅仅当该列为auto_increment时才支持索引,否则不支持任何形式的索引
6.  插入速度相对myisam和innodb来说,速度较快
    archive 100w: 38.067 sec
    innodb  100w: 1 MIN 27 sec
    myisam  100w: 52.035 sec
    (为粗略测试!)
7.  archive锁机制是行锁
8.  使用场景:归档数据、日志信息(系统功能模块访问日志)

下面我们重点来说说第五点,archive的索引!因为在5.0刚刚引入archive存储引擎的时候,它是没有索引的,所以,由于当时的文章发表人,一直没有更新或是关注archive存储引擎相关的文章!导致了一个错误的观点一致在流传,那就是archive不支持索引!archive是支持索引的,只是他的索引有些特别!  

只支持auto_increment的列索引.这里auto_increment很重要,如果某列为主键,但是不是auto_increment的话,archive仍旧不能建立索引!


如果archive有索引后,插入只能是由小到大!一旦间隔,想再次插入到间隔里面,则会报如下错误:Can't write; duplicate key in table 'archivetest'!


譬如:表a是archive存储引擎,有列ID为自增(即auto_increment).现在分别插入1,2,3,9 这写数字都是由小到大,插入没有问题,发现3,9中间间隔了几个,现在想插入回去;再次插入4,会发现报错:Can't write; duplicate key in table 'archivetest'!这就是archive的索引特性!这是我本文所要阐述的重点!