文章目录

  • 1、存储引擎概述
  • 2、MyISAM存储引擎
  • 3、InnoDB存储引擎
  • 4、MEMORY存储引擎


1、存储引擎概述

什么是存储引擎?

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。

存储引擎这个名字只有在MySQL中存在。(Oracle中又对应的机制,但是不叫作存储引擎。Oracle中没有特殊的名字,就是"表的存储方式")

查看当前mysql支持的存储引擎?

show engines

MySQL的FEDERATED存储引擎 sqlserver mysql的存储引擎是什么_mysql


2、MyISAM存储引擎

MySQL的FEDERATED存储引擎 sqlserver mysql的存储引擎是什么_存储引擎_02

MyISAM这种存储引擎不支持事务。

MyISAM是mysql最常用的存储引擎,但是这种引擎不是默认的。

1、MyISAM采用三个文件组织一张表

  1. xxx.frm(存储格式的文件)
  2. xxx.MYD(存储表中数据的文件)
  3. xxx.MYI(存储表中索引的文件)

2、MyISAM表还支持三种不同的存储格式

  1. 静态表(默认): 字段都是非变长的(每个记录都是固定长度的)。存储非常迅速、容易缓存,出现故障容易恢复;占用空间通常比动态表多。
  2. 动态表: 占用的空间相对较少,但是频繁的更新删除记录会产生碎片,需要定期执行optimize table或myisamchk -r命令来改善性能,而且出现故障的时候恢复比较困难。
  3. 压缩表: 使用myisampack工具创建,占用非常小的磁盘空间。因为每个记录是被单独压缩的,所以只有非常小的访问开支。

3、优缺点和使用场景

  1. 优点: 可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率
  2. 缺点: 不支持事务
  3. 使用场景:如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。

3、InnoDB存储引擎

InnoDB是MySQL5.5之后的默认存储引擎

MySQL的FEDERATED存储引擎 sqlserver mysql的存储引擎是什么_java_03


InnoDB管理的表具有以下特点:

  1. 每个InnoDB表在数据库目录中以 .frm 格式文件表示
  2. InnoDB表空间tablespace被使用于存储表的内容
  3. 提供一组用来记录事务性活动的日志文件
  4. COMMIT提交、SAVEPOINTROLLBAC回滚事务处理
  5. 提供全ACID兼容
  6. 在MySQL服务器崩溃后提供自动回复
  7. 多版本(MVCC)和行级锁定
  8. 支持外键及引用完整性,包括级联删除和更新

InnoDB优缺点

优点: 支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。

缺点:相比较于MyISAM,写的处理效率差一点,并且会占用更多的磁盘空间来存储数据和索引,为重量级。


4、MEMORY存储引擎

MySQL的FEDERATED存储引擎 sqlserver mysql的存储引擎是什么_java_04

MEMORY管理的表具有以下特点:

  1. 在数据库目录内,每个表均以 .frm 格式的文件表示
  2. 表数据及索引被存储在内存中。
  3. 表级锁机制
  4. 不能包含TEXT或BLOB字段

优点: 查询速度最快。
缺点: 数据库服务一旦关闭,数据就会丢失,比如:重启或计算机关机等等,另外对表的大小有限制

应用场景: 如果需要很快的读写速度,对数据的安全ing要求较低,可以选择MEMORY