Mysql常用的四种存储引擎

Mysql创建表常用的四种存储引擎有:MySAM存储引擎、InnoDB存储引擎、MEMORY存储引擎、MERGE存储引擎。

MyISAM存储引擎

MyISAM存储引擎特点:不支持事务、不支持外键、访问速度快,对事务完整性没有要求,以select、insert为主。

支持3种不同的存储格式:静态表、动态表、压缩表。

(1)静态表

表中的字段都是非变长字段的,优点是存储非常迅速,容易缓存,出现故障容易恢复。缺点是占用的空间通常比动态表多,在取数据时,默认会把字段后面的空格去掉,如果不注意的话会将有用的空格也给忽略。

(2)动态表

表中有的字段不是固定长度的,优点是占用的空间相对较少,缺点是频繁的更新、删除操作容易产生碎片,需要定期执行 OPTIMIZE TABLE或者myisamchk-r命令来改善性能。

(3)压缩表

每个记录是被单独压缩的,因此有非常小的访问开支。

InnoDB存储引擎

该存储引擎提供了具有提交、回滚、奔溃恢复能力的事务安全。与MySAM存储引擎相比,写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

特点:支持自动增长列、支持外键约束。

MEMORY存储引擎

MEMORY存储引擎用于在内存中的内容来创建表,每个表实际对应一个磁盘文件,格式是.frm。主要用于内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效的对中间结果进行分析并得到最终的统计结果。

特点:访问快,因为数据存放在内存汇总,默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失。

HASH索引:

HASH索引检索效率是非常高的,可以一次定位,而B-Tree索引需要从根结点到分支节点,最后才可以访问到需要的节点,进行多次的IO访问,HASH索引的效率远高于B-Tree索引。

缺点:对于不精确查找,无效,不支持不精确查找。

MERGE存储引擎

MERGE存储引擎是一组MySAM表的组合,这些表结果完全相同,merge本身没有数据,对merge类型的表可以进行查询、更新、删除等操作,这些操作基本上是对内部的MyISAM表进行操作的。

Q.E.D.