1. 存储引擎的概念
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎
例如:
如果你在研究大量的临时数据,你也许需要使用内存存储引擎,将数据存储在内存中。内存存储引擎能够在内存中存储所有数据。缺点是不能长期保存。
也许需要一个支持事务处理的数据库(以确定事务处理不成功时数据的回退能力)选择支持事务的存储引擎。
2. 查看引擎
show engines;
Support 列的值表示某种引擎是否能使用,YES表示可以使用,NO表示不能使用,DEFAULT表示该引擎为当前默认的存储引擎。
3. 查看当前使用的存储引擎
show variables like '%storage_engine%';
4. MyISAM和InnoDB的区别
功能 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 支持表锁 | 支持行锁 |
缓存 | 只缓存索引,不缓存数据 | 不仅缓存索引,还要缓存真实数据,对内存要求比较高,而且内存大小对性能有决定性的影响 |
表空间 | 占用小 | 占用小 |
关注点 | 性能 | 事务 |
默认安装 | 需要选定 | 默认 |
备注文件结构对比
MyISAM:
b.frm: 描述结构文件,字段长度等
b.MYD(MYData): 数据信息文件, 存储数据信息(如果采用独立表存储模式)
b.MYI(MYIndex): 索引信息文件
InnoDB:
b.frm: 描述结构文件,字段长度等
b.ibd: 存储数据信息和索引形式