MySQL的存储引擎

一、运行show engines命令,查看当前数据库支持的存储引擎

二、常用的存储引擎

InnoDB

可以通过自动增长列,方法是auto_increment。

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

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

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

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

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

对于InnoDB类型的表,其数据的物理组织形式是聚簇表。所有的数据按照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上;

当然InnoDB的存储表和索引也有下面两种形式:

1. 使用共享表空间存储:所有的表和索引存放在同一个表空间中。

2. 使用多表空间存储:表结构放在frm文件,数据和索引放在IBD文件中。分区表的话,每个分区对应单独的IBD文件。使用分区表的好处在于提升查询效率。

MyISAM

使用这个存储引擎,每个MyISAM在磁盘上存储成三个文件。

1. frm文件:存储表的定义数据

2. MYD文件:存放表具体记录的数据

3. MYI文件:存储索引

MEMORY 

memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。

默认情况下,memory数据表使用散列索引,利用这种索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了。因此,散列索引值适合使用在"="和"<=>"的操作符中,不适合使用在"<"或">"操作符中,也同样不适合用在order by字句里。如果确实要使用"<"或">"或betwen操作符,可以使用btree索引来加快速度。

posted @ 2020-04-01 08:41  一柒微笑  阅读(132)  评论(0编辑  收藏  举报