标签:clust 碎片 压缩 重复 固定 mysq 顺序 要求 inno
DBMS使用存储引擎进行数据的创建、查询、更新、删除操作。
不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
MySQL提供了多种存储引擎,最常见的有3种。
MySQL5.5之前的默认的存储引擎,每个MyISAM在磁盘上存储成三个文件,文件名和表名相同,扩展名分别是
(1)frm文件:存储表的定义
(2)MYD文件:存储表中的数据(记录)
(3)MYI文件:存储索引。索引保存的是数据文件的指针
(1)静态表(fixed)
表中不能包含变长字段(比如VARCHAR, BLOB, TEXT),每个记录都是固定的长度。如果MyISAM表中没有一个变长字段,则默认使用静态表。
优点:存储迅速,出现故障容易恢复
缺点:占用空间比动态表大。静态表在进行数据存储时会按照事先定义的列宽补足空格,但在访问的时候会去掉补的空格
(2)动态表(dynamic)
可包含变长字段(varchar、blob、text),如果一个MyISAM表包含任何可变长度的字段,或者该表创建时用row_format=dynamic指定,则该表使用动态格式存储
优点:占用空间小
缺点:频繁的更新、删除操作会产生碎片,需要定期用optimize table语句或myisamchk -r命令来改善性能,出现故障后较难恢复
(3)压缩表
由myisampack工具创建,每条记录都会被单独压缩,占据硬盘空间极小。
MySQL5.5及其之后默认的存储引擎
可以在join查询中混用InnoDB引擎的表、其他引擎的表
(1)锁粒度不同,InnoDB为行级锁,MyISAM为表级锁
(2)InnoDB支持外键,MyISAM不支持
(3)InnoDB支持事务,MyISAM不支持
(4)InnoDB缓存查询到的索引、数据,MyISAM只缓存索引
(5)查询效率MyISAM远高于InnoDB,尤其是在数据表行数多的时候
(6)InnoDB支持在线热备,有很成熟的在线热备解决方案
(7)MyISAM的表文件包括:.frm(表定义),.MYI(索引),.MYD(数据),InnoDB的表文件为.frm(表定义),.ibd(索引、数据)
一句话,MyISAM效率更高、速度更快,InnoDB功能更全、安全性更好、开销更大。
数据(记录)不是储存在文件中,而是存储在内存中。每个memory表对应一个.frm文件(表定义、索引)。
一个数据库中,不同的表可以使用不同的存储引擎。
使用合适的存储引擎,会提高数据库的性能。
标签:clust 碎片 压缩 重复 固定 mysq 顺序 要求 inno
原文地址:https://www.cnblogs.com/chy18883701161/p/12421786.html