第15章:存储引擎和表类型 / 15.8. ARCHIVE存储引擎

ARCHIVE存储引擎被用来以非常小的覆盖区存储大量无索引数据。 

要允许这个存储引擎,在建立MySQL之时使用--with-archive-storage-engine选项来configure。如果这个存储引擎可带这个语句使用,你可以看见:

mysql> SHOW VARIABLES LIKE 'have_archive';

当年创建一个ARCHIVE表,服务器在数据库目录创建一个表定义文件。文件由表的名字开始,并由一个.frm的扩展名。存储引擎创建其它文件,所有都有由表名字开头的名字。数据和元数据文件有扩展名.ARZ和.ARM。一个.ARN文件可能在优化操作中出现。

ARCHIVE引擎仅支持INSERT和SELEC(无删除,替换或更新)。它支持ORDER BY操作,BLOB 域,以及基本地所有数据类型,除了几何数据类型(请参阅19.4.1节,“MySQL 空间数据类型”)。ARCHIVE引擎使用行级锁定。

存储: 当记录被插入时,它们被压缩。ARCHIVE引擎使用zlib无损数据压缩。OPTIMIZE TABLE的使用可以分析表,并把它打包为更小的格式( 使用OPTIMIZE TABLE的原因,往下看)。引擎页支持CHECK TABLE。有数种被使用的插入类型:

·         直接插入INSERT之时把一行推仅压缩缓冲,并且缓冲在它需要的时候刷新。到缓冲的插入被锁定保护。一个SELECT强制一个 刷新发生,除非进来的唯一插入是INSERT DELAYED(那些刷新如同需要一样)。请参阅13.2.4.2节,“INSERT DELAYED 语法”

·         块插入旨在它完成后可见,除非其它插入在同一时间发生,在这种情况下,块插入可以被部分看见。一个SELECT不会导致一个块插入的 刷新,除非SELECT在被装载时发生一个正常插入。

取回: 在取回时,记录根据需要被解压缩,没有行缓存。一个SELECT操作执行完全表格扫描:当一个SELECT发生之时,它找出当前有多少行可用,并读行的数量。SELECT被当作持续读来执行。注意,许多SELECT语句在插入过程中会损坏压缩,除非块插入或者延迟的插入被使用。要修复任何已发生压缩问题,你可以总是做OPTIMIZE TABLE(也支持REPAIR TABLE)。被SHOW TABLE STATUS报告的行数总是正确的。请参阅13.5.2.6节,“REPAIR TABLE语法”13.5.2.5节,“OPTIMIZE TABLE语法”13.5.4.18节 ,“SHOW TABLE STATUS 语法”

对于ARCHIVE存储引擎,在 http://forums.mysql.com/list.php?112 上有专门论坛。