myisam是isam的mysql扩展.除非修改配置,通常来讲myisam是默认的存储引擎.html
只可以进行表锁,不支持行锁。在进行读取操做时不会影响到其余用户其余的读取操做,于是有比较好的并发性。可是在执行写入操做时,会产生一个“排他锁”,其余用户的的读写操做都没法执行。所以若是一张表的查询很慢,常常发生等待,可能不是由于查询语句有问题执行比较慢,而是由于这张表同时执行了大量的写操做。总结起来,读操做和读操做之间是并行的,可是写操做和其余操做是串行的。
mysql
在以上基础上myisam还具备一个特性:并发插入(concurrentInsert)。该特性容许用户在读取一张表时,同时insert一条语句,不过update等其余写操做时不容许的。sql
myisam的并发插入特性是能够控制的。能够经过修改my.cnf文件中的concurrent_insert参数设置并发插入的级别:数据库
concurrent_insert = 0 并发插入特性关闭安全
concurrent_insert = 1 当MyISAM存储引擎表数据文件中不存在空洞(表中间没有被删除的行)时,能够在表的末尾插入数据数据结构
concurrent_insert = 2 不管有没有空洞,均可以在表的末尾插入数据并发
MySQL支持对myisam的自动检查和修复
工具
用户能够使用check table xxx 和 repair table xxx命令实现对myisam表的检查和修复。spa
用户能够使用myisamchk工具来检查或修复myisam表,也能够使用myisampack来压缩myisam表,让它们占更少的空间。orm
myisam是不支持事务(TST)的。因此在牺牲了安全的同时,相较于事务安全的数据库引擎,myisam更快,占用更少的存储空间,执行命令所须要的内存更少。
myisam的数据库表有三个文件构成,数据结构是frm后缀的文件(frm是通用的数据结构文件),数据文件是MYD(MYData)后缀的文件,索引是MYI(MYIndex)后缀的文件。这些文件的文件名是相同的。
myisam提供全文检索能力
myisam支持大文件,且text和blob列能够被索引.固然不是彻底做为索引,只有前500字节能够做为索引.
myisam支持optimize table命令,这是由于myisam的索引文件和数据文件是分离的。
myisam有三种存储格式,分别是静态,动态和已压缩.
静态表是myisam的默认存储格式。当表中没有varchar,text,blob列时会自动使用这个格式。改存储格式的表会比较快,也比较容易恢复。
动态表是当表中有varchar,text,blob列时自动选择的。动态存储格式大部分时候比静态存储格式占用的空间更小,可是崩溃了也比较难恢复。
已压缩存储格式只能经过myisampack工具创建。它占得空间天然是最小的。
http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#myisam-storage-engine