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