MySQL-存储引擎

简介:存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的, (同一个数据库的不同表可以选择不同的存储引擎)  所以存储引擎也可被称为表类型。

我们输入 SHOW CREATE TABLE 表名; 来查看建表语句。我们可以看到我们建表时候未输入存储引擎,系统有默认的存储引擎 InnoDB(MySQL5.5以后默认InnoDB)。

1.创建表的时候,指定存储引擎:

CREATE TABLE 表名(

字段1 字段类型(长度)[COMMENT 字段1注释],

字段2 字段类型(长度)[COMMENT 字段2注释],

字段3 字段类型(长度)[COMMENT 字段3注释]

)ENGINE=INNODB[COMMENT 表注释];

2.查询数据库支持的存储引擎:

SHOW ENGINNES;

MySQL-存储引擎_第1张图片

InnoDB:

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,MySQL5.5以后,MySQL默认的存储引擎是InnoDB。

特点:

DML操作遵循ACID模型,支持事务

行级锁,提高并发访问性能

支持外键约束,保证性能完整性和正确性

文件:

xxx.db:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm,sdi),数据和索引。

逻辑存储空间:

MySQL-存储引擎_第2张图片

TableSpace(表空间)包含很多Segment(段)包含很多Extent(区)包含很多Page(页)包含很多Row(行)包含一个(最后一次操作的id 和一个指针 还有一个一个的字段),page 页是磁盘操作的最小单元。一个区的大小是固定的1M,一个页的大小是固定的16K。

MyISAM

MyISAM是MySQL早期的默认存储引擎。

特点:

不支持事务,不支持外键

支持表锁,不支持行锁

访问速度快

文件:

MyISA会有三个文件:

xxx.sdi:存储表结构信息

xxx,MYD:存储数据

xxx.MYI:存储索引

 

Memory

Memory引擎的表的数据是存储在内存中的,由于受到硬件问题或断电问题的影响,只能将这些表作为临时表或缓存使用。

特点:

内存存放

hash索引(默认)

文件:

xxx.sdi:存储表结构信息

MySQL-存储引擎_第3张图片

存储引擎的选择:

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

MySQL-存储引擎_第4张图片

你可能感兴趣的:(mysql,数据库)