数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。
1.InnoDB
InnoDB官方特点描述是“支持事务,行级锁定和外键”。是事务型数据库的首选引擎,支持事务安全表 (ACID),支持行锁定和外键。MySQL5.5.5 之后,InnoDB作为默认存储引擎。如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择。
2.MyISAM
MyISAM基于ISAM的存储引擎,并对其进行扩展。它是在Web、数据存储和其他应用环境下最常用的存储引擎之一。拥有较高的插入、查询速度,但不支持事务。在 MySQL5.5.5之前的版本中,MyISAM 是默认存储引擎。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
3.MEMORY
MEMORY官方特点描述是“基于散列,存储在内存中,对临时表有用”。该存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。不支持事务和外键。如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。
4.Archive
Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive。如果只有INSERT和SELECT操作,可以选择Archive。
5.查看MySQL支持的引擎和默认引擎
SHOW ENGINES; #输出结果中Support列的值是YES代表目前mysql支持该类引擎,如果是DEFAULT代表是默认引擎。
6.查看MySQL某个表使用的引擎
SHOW CREATE TABLE 表名;
7.四种存储引擎对比
功 能 | MYISAM | Memory | InnoDB | Archive |
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | x | x | ✓ | x |
支持全文索引 | ✓ | x | x | x |
支持数索引 | ✓ | ✓ | ✓ | x |
支持哈希索引 | x | ✓ | x | x |
支持数据缓存 | x | N/A | ✓ | x |
支持外键 | x | x | ✓ | x |