mysql引擎:InnoDB、MyISAM、Memory、Archive

介绍

数据库管理系统(DBMS)使用存储引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁 等功能,使用不同的存储引擎,还可以 获得特定的功能

查看支持的存储引擎

mysql 支持多种 存储引擎,可通过下面命令查看:

SHOW ENGINES

结果如下:

查看数据库使用哪个引擎

通过命令:

SHOW VARIABLES LIKE 'storage_engine';

InnoDB

默认存储引擎

存储文件

  • .frm 文件:存放表结构

  • .ibd 文件:存放数据和索引

特性

  1. 支持自动增长列,方法是auto_increment。

  2. 支持 事务。默认的事务隔离级别为 可重复度,通过MVCC(并发版本控制)来实现的。

  3. 使用的锁粒度为行级锁,可以支持更高的并发;

  4. 支持外键约束;外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。

  5. 配合一些热备工具可以支持在线热备份;

  6. 在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;

  7. 对于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


原文出处:/show_1IXqlWBrDKW.html