MySQL:存储引擎

12/31/2023 后端数据库MySQL

目录


参考:


# MySQL:存储引擎

存储引擎:存储数据、建立索引、更新/查询数据等技术的实现方式。

存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型

  • 连接层:提供一些客户端和连接服务,主要完成连接处理、授权认证等相关的安全方案。同时服务器也会为每个安全连接的用户验证其操作权限。
  • 服务层:主要完成大多数核心服务功能,如:SQL接口,并完成缓存的查询,SQL的分析和优化。所有跨存储引擎的功能也在这一层实现,如存储过程、函数等。
  • 引擎层:存储引擎真正负责MySQL中数据的存储和使用,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,可根据具体需求选择最适合的存储引擎。
  • 存储层:主要是将数据存储在文件系统上,并完成与存储引擎的交互。

注意:索引是在引擎层完成的,不同的存储引擎的索引结构不同。

MySQL5.5及之后默认的存储引擎INNODB,之前默认支持MyISAM。

查询当前数据库支持的存储引擎

show engines;
1

在创建表时,指定存储引擎

create table 表名(
    字段 数据类型 约束,
    字段 数据类型 约束
) engine = 存储引擎名称;
1
2
3
4

InnoDB、MyISAM、Memory存储引擎的对比

# InnoDB

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

特点

  1. DML操作遵循ACID原则,支持事务;
  2. 支持行锁,采用MVCC来支持高并发 ;
  3. 支持外键FROEIGN KEY约束,保证数据的完整性和正确性;
  4. 支持崩溃后的安全恢复;
  5. 不支持全文索引。

逻辑存储结构


# MyISAM

MyISAM是MySQL早期(MySQL5.5之前)默认的存储引擎

特点

  1. 不支持事务,不支持外键
  2. 支持表锁,不支持行锁
  3. 访问速度快
  4. 在表有读取查询的同时,支持往表中插入新纪录
  5. 对于不会进行修改的表,支持压缩表,极大减少磁盘空间占用

# Memory

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

特点

  1. 内存存放,访问速度快
  2. 支持hash索引
上次更新时间: 9/25/2024, 1:17:45 AM