MySQL存储引擎

InnoDB:

是什么?

一个健壮的事务型存储引擎,MySQL5.7开始成为默认存储引擎

应用场景

  1. 更新密集的表,InnoDB存储引擎特别适合处理多重并发的更新请求

  2. 事务,InnoDB存储引擎是支持事务的标准MySQL存储引擎

  3. 自动灾难恢复, 与其他存储引擎不同,InnoDB表能够自动从灾难中恢复

  4. 外键约束,MySQL支持外键的存储引擎只有InnoDB

  5. 支持自动增加列AUTO_INCREMENT属性

MyISAM:

特性

  1. 无法处理事务

  2. MyISAM可以独立于操作系统 当建立一个MyISAM表时,会在磁盘上建立三个文件xxx.frm xxx.MYD xxx.MYI

(eg:

建立demo表:

1.demo.frm #存储表定义,

2.demo.MYD #存储数据

3.demo.MYI #存储索引

)

应用场景

  1. 选择密集性的表,MyISAM 存储引擎在筛选大量数据时表现比较好,是突出的优点

  2. 插入密集性的表,MyISAM的并发插入特性允许同时选择和插入数据。 MyISAM存储引擎很适合管理邮件或者Web服务器日志数据

Memory

是什么?

一个存储介质使用系统内存的存储引擎,

特性

  1. 虽然性能很高,但是当Mysqld守护进崩溃时,Memory数据都会丢失。

  2. Memory数据表的数据使用长度不变的格式,意味着不能使用BLOB和TEXT这些长度可变的数据类型(VARCHAR 虽然是长度可变的类型,但是因为它在MySQL内部当做长度固定不变的CHAR类型,可以使用)

3.Memory使用系统内存,可以设置max_heap_table_size控制Memory表的最大大小

应用场景

  1. 目标数据比较小,频繁访问

  2. 数据是临时的,要求必须立即使用

  3. 数据丢失对服务产生实质影响不大

  4. Memory同时支持散列索引和B树索引。B树索引优于是散列索引,可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘。散列索引进行“相等比较”非常快,但是对“范围比较”的速度比较慢,所以散列索引值适合使用在=和<> 的操作符中,不适合在<或>操作符中,也同样不适合用在order by 子句中

你可能感兴趣的:(MySQL存储引擎)