MyISAM存储引擎是在mysql5.5之前版本默认的存储引擎,mysql大部分系统表和临时表(是指排序,分组等操作中,在数量超过一定数量后,由查询优化器建立的临时表)都使用这个存储引擎。
创建一张MyISAM存储引擎mysql会创建3个文件。MyISAM引擎会将表存储在两个系统文件中,一个是以MYD为扩展名的数据文件,一个是以MYI为扩展名的索引文件。以frm为扩展名的文件是所有存储引擎都会创建的,用来记录表结构。
特性:
并发性和锁级别
使用表级锁,当对表中数据做修改时,会对整个表 进行加锁,在读取数据时候,也需要对表加共享锁,所以对读写混合的操作并发性并不是太好。如果是只读的时候,并发性还是可以接受的,因为共享锁并不会阻塞共享锁。
表的损坏和修复
MyISAM支持对任意意外关闭所损坏的表的检查和修复,这里的修复并不是事务恢复,因为MyISAM不支持事务,有可能造成数据的丢失
check table tablename 检查表
repair table tablename 修复表
支持全文索引,还支持对text,blob字符前500个字符加前置索引
支持数据压缩,在实际运用中如果一个MyISAM表是只读的,那么可以对数据量大的表进行数据压缩,压缩后的表只能读而不能进行写的操作。
命令 myisampack -b -ftest.MYI (-f强制压缩)
限制:
版本<5.0时默认表的大小最多是4G,在5.0以后的版本默认大小是256T。如果想存储更多的数据需要修改max_rows和avg_row_length两个参数。
使用场景:
非事物性应用 (不支持事物),适合数据仓库,报表类的应用
只读应用 (可以压缩)
空间类应用(支持空间函数)