Mysql引擎之MyISAM引擎

MyISAM做为Mysql的默认引擎,在性能与特征之间,MyISAM提供一种良好的平衡,这特征包括全文检索(Full-Text Indexing)、压缩、空间函数(GIS)。但MyISAM不支持事务和行级锁。

存储

一般来说,MyISAM将每个表存储成两个文件:数据文件和索引文件。两个文件的扩展名分别为.MYD和.MYI。MyISAM的格式是平台通用的,这意味着用户可以在不同架构的服务器上毫无问题地相互拷贝数据文件和索引文件。
MyISAM表可以包含动态行(Dynamic Row)和静态行(Static Row,即固定长度行)。Mysql会根据表定义决定选用何种行格式。MyISAM表的可容纳的行总数,一般只受于数据库服务器的可用磁盘空间大小,以及操作系统允许创建的最大文件大小。在Mysql5.0中,默认配置的含有可变长定义的MyISAM表可以支持256TB的数据处理,并使用6字节的指针记录数据。更早的Mysql版本默认使用4字节指针,最大可处理4GB数据。所有的Mysql版本都支持最大8字节的指针。如果想改变MyISAM表上的指针大小(调高或调低),必须在表创建选项MAX_ROWS和AVG_ROW_LENGTH中,指定相关的值,这些选项代表了用户预计使用的表大小。

MyISAM特性

加锁与并发

MyISAM对整张表进行加锁,而不是行。读取程序(Reader)在需要读取数据时,在所有表上都可以获得共享锁(读锁),而写入程序(Writer)可以获得排他锁(写锁)。用户在运行select查询时,可以在同一张表内插入新行(也称之为并发插入)。这是一个非常重要和有用的特征。

自动修复

Mysql支持对MyISAM表的自动检查和自动修复。

手工修复

用户可以使用CHECK TABLE mytable 和REPAIR TABLE mytable 命令,检查表中的错误,并修复错误。当服务器离线时,也可以使用myisamchk 命令行工具检查和修复表。

索引特性 

在MyISAM表中,用户可以基于BLOB或TEXT类型列的前500个字符,创建相关索引。MyISAM支持全文索引,它可以根据个别单词,为复杂的搜索选项创建相关索引。

延迟更新索引(Delayed Key Writes)

使用表创建选项DELAY_KEY_WRITER创建MyISAM表,在查询结束后,不会将索引的改变数据写入磁盘,而是在内在的键缓冲区(In-memory Key Buffer)中缓存索引改变数据。它只会在清理缓冲区,或者关闭表时,才将索引块转储到磁盘。对于数据经常改变,并且使用频繁的表,这种模式大大提高了表的处理性能。不过,如果服务器或系统崩溃,索引将肯定损坏,并需要修复。用户可以使用脚本,如运行myisamchk工具,在重启服务器前进行修复,也可以使用自动恢复(Automatic Recovery)选项进行修复(即使没有选用DELAY_KEY_WRITE选项,这些修复上的安全措施也是很有价值的)。延迟更新索引特性可以被全局配置,也可以为个别表单独配置。

压缩的MyISAM表

某些表,例如基于CD-ROM或DVD-ROM的应用,或者某些嵌入环境下的应用,一旦被创建和填写数据后,数据将永不改变。这种类型的表非常适合选用压缩的MyISAM表(Compressed MyISAM Table).
使用myisamchk实用工具,可以对表进行压缩(或“打包”)。压缩表一般是不能改变的(除非用户需要,也可以在解压,修改之后,再重新压缩表)。压缩表占用的大乐透空间很小,使之可以提供更快的表处理性能。因为对于查找记录,压缩后的表将减少磁盘寻道时间。压缩MyISAM表也可以拥有索引,但这些索引也是只读的。
对基于新一代硬件的大多数应用,读取压缩表时,因解压数据导致的系统开销并不是那么引人瞩目,所以这种模式的真正收益是降低了磁盘I/O。而且,压缩表内的每一行是被单独压缩的,如果只是提取一行数据,Mysql并不需要因此解压整个表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值