介绍
数据库管理系统(DBMS)使用存储引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁 等功能,使用不同的存储引擎,还可以 获得特定的功能
查看支持的存储引擎
mysql 支持多种 存储引擎,可通过下面命令查看:
SHOW ENGINES
结果如下:
查看数据库使用哪个引擎
通过命令:
SHOW VARIABLES LIKE 'storage_engine';
InnoDB
默认存储引擎
存储文件
.frm文件:存放表结构.ibd文件:存放数据和索引
特性
支持自动增长列,方法是auto_increment。
支持 事务。默认的事务隔离级别为 可重复度,通过MVCC(并发版本控制)来实现的。
使用的锁粒度为行级锁,可以支持更高的并发;
支持外键约束;外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。
配合一些热备工具可以支持在线热备份;
在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;
对于InnoDB类型的表,其数据的物理组织形式是聚簇表。所有的数据按照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上;
MyISAM
MyISAM基于ISAM存储引擎,并对其进行扩展。
它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
MyISAM拥有较高的插入、查询速度,但 不支持事务。
存储文件
.frm文件:存放表结构.MYD文件:(MYData)存放数据.MYI文件:(MYIndex)存储索引。索引的结构是 B+树 结构
数据文件和索引文件可以放在不同目录
Memory
将数据存在内存,提高数据的访问速度
存储文件
.frm 文件
引擎对比
InnoDB应用场景
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
MyISAM应用场景
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
Memory应用场景
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
Archive应用场景
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
感谢:
https://www.jianshu.com/p/4bb9f78b4f6d
https://www.jianshu.com/p/4bb9f78b4f6d

