MyISAM在MySQL 5.1中是默认的存储引擎。MyISAM不支持事务,不支持外键,它的优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。一般的互联网网站大部分都是以查询为主,可以使用该引擎。
   每个MyISAM类型的表在磁盘上存储成3个文件,其文件和表名相同,但是扩展名分别是:
1).frm(存储表定义);
   2) .MYD(my data,存储表数据)
   3) .MYI(my index,存储索引信息,myisam表使用B型树索引)
创建MyISAM类型的表时,数据库文件和索引文件可以放置在不同的目录,以平均分布I/O,获得更快的速度,
CREATE TABLE MYISAM_TEST(
                                            id  int auto_increment not null ,  primary key(id)
                                    ) engine=myisam 
                                     data directory = ‘/opt/data’ index   directory = ‘/opt/index’
注意:选择的data和index的目录需要是绝对路径,且一定要保证当前启动mysql服务的用户对其有写权限,否则会提示错误。
MyISAM类型的表可能会损坏,原因有多种,损坏后的表可能不能被访问,会提示需要修复或者访问后返回错误的结果。
MyISAM类型的表提供修复的工具,用CHECK TABLE语句检查MyISAM表的健康,并用REPAIR TABLE语句修改一个损坏的MyISAM表。表损坏可能导致数据库异常重新启动等。
MyISAM表支持3钟不同的存储格式:静态表(固定长度),动态表,压缩表。
其中,静态表是默认的存储格式,在静态表中各种字段都是非变长字段(不包括变量长度列,如VARCHAR,BLOB,TEXT类型的列),这样每条记录都是固定长度的。该存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复,缺点是占用的空间比动态表多。静态表的数据在存储的时候会按照列的宽度定义补足空格,但是在应用访问的时候并不会得到这些空格,这些空格在应用之前已经去掉了。(要注意的是,如果保存的内容后面本来就带有空格,那么返回结果的时候也会被去掉)
动态表是表中含有不固定长度(如varchar,blob,text等)列的表,优点是占用的存储空间比较少,但是频繁的更新删除记录会产生碎片,要定期optimize tbale 语句或myisamchk -r来检查优化表,另外动态表在出现故障的时候恢复比较困难。
压缩表是有Myisampack工具创建,占据非常小的存储空间。已压缩表是只读格式的,已压缩表可以用myisamchk来解压缩。