特点
- MyISAM不支持事务
-
优势
访问速度快。对事务完整性没有要求或者以
SELECT
、INSERT
为主的应用基本上可以使用这个引擎来创建表。存储
每个MyISM存储成3个文件,其文件名和表名相同,但扩展名分别是:
.frm(存储表定义);
- .MYD(MYData存储数据);
- .MYI(MYIndex,存储索引)。
不同的MyISAM表的索引文件和数据文件可以放置到不同的路径下,平均分布IO,获得更快的速度。文件路径需要是绝对路径,并且具有访问权限。通过DATA DIRECTORY
和INDEX DIRECTOCRY
指定。
MyISAM支持三种不同的存储格式,分别是:
静态表(固定长度)表;(默认)
- 字段都是非变长字段,每个记录都是固定长度。
- 优点:存储迅速,容易缓存,出现故障容易恢复。
- 缺点:占用空间通常比动态表多。
- 问题:静态表数据在存储是会按照列的宽度补充空格(尾部补充),但是访问时会被去掉。但是如果保存的数据本来就带有空格,访问时也会被去掉。eg:
mysql> create table `test5`(`str` char(10)) engine=myisam;
mysql> insert into `test5` values ('kylin ');
mysql> select length(`str`) from `test5`;
+---------------+
| length(`str`) |
+---------------+
| 5 |
+---------------+
动态表
- 包含变长字段,记录不固定长度,占用空间相对较少。
- 频繁更新和删除记录会产生碎片,需要定期执行
OPTIMIZE TABLE
语句或myisamchk -r
命令改善性能。 - 故障恢复比较困难。
压缩表
应用是以插入和查询操作为主,有少量的修改和删除操作。
- 对事务完整性和并发要求不是很高。