myISAM
- MySQL5.1之前,myISAM是默认存储引擎,myISAM提供了大量的特性,包括全文索引、压缩、空间函数等,但不支持事务和行锁,最大缺陷是崩溃后无法安全恢复。对于只读的数据或表比较小,可以忍受修复操作的情况仍然可以使用myISAM。
- myISAM将表存储在数据文件和索引文件中,分别以.myd和.myi作为扩展名。myISAM可以包含动态或者静态行,MySQL会根据表的定义决定行格式。myISAM表可以存储的行记录数一般受限于可用磁盘空间或者操作系统中单个文件的最大尺寸。
- myISAM对整张表加锁,读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁。但是在表有读取查询的同时,也支持并发往表中插入新的记录。
- 对myISAM表,MySQL可以手动或自动检查和修复操作,这里的修复和事务恢复以及崩溃恢复的概念不同。执行表的修复可能导致一些数据丢失,而且修复操作很慢。
- 对于myISAM表,即使是BLOB和TEXT等长字段,也可以基于其前500个字符创建索引。myISAM支持全文索引,这是一种基于分词创建的索引,可以支持复杂的查询。
- myISAM设计简单,数据以紧密格式存储,所以在某些场景下性能很好。myISAM最典型的性能问题还是表锁问题,如果所有的查询长期处于locked状态,那么原因毫无疑问就是表锁。
欢迎批评指正,提出问题,谢谢!