mysql进阶之存储引擎

一、mysql体系结构

MySQL 体系结构是指 MySQL 数据库系统的内部组成和运行机制,它包括三个主要层次:应用层、服务层和存储引擎层。

应用层是 MySQL 体系结构的最上层,它提供了应用程序接入 MySQL 服务的接口,主要包括以下内容:

  • 连接处理:负责建立、维护和断开客户端和服务器之间的连接。
  • 用户鉴权:负责验证客户端的身份和权限,以及加密通信。
  • 安全管理:负责防止 SQL 注入等攻击,以及备份和恢复数据。

服务层是 MySQL 体系结构的核心层,它完成了大多数的核心服务功能,主要包括以下内容:

  • SQL 接口:负责接收客户端的 SQL 命令,并返回执行结果。
  • 查询解析器:负责对 SQL 命令进行语法分析和语义检查,生成解析树。
  • 查询优化器:负责对解析树进行优化,选择最佳的执行计划。
  • 查询缓存:负责缓存常用的查询结果,提高查询效率。
  • 存储引擎 API:负责与不同的存储引擎进行通信,屏蔽底层差异。

存储引擎层是 MySQL 体系结构的最下层,它负责数据的存储和读取,主要包括以下内容:

  • 存储引擎:负责实现不同的数据存储方式,如 InnoDB、MyISAM、Memory 等。
  • 数据文件:负责将数据存储在文件系统中,如 .frm、.ibd、.myd、.myi 等。

二、存储引擎概述

 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

2.1查询建表语句

 2.2指定存储引擎

MySQL 在创建表时,可以通过 ENGINE 来指定存储引擎,在 create 语句最后加上 engine=存储引擎; 即可

create table user (
    id int not null,
    name varchar(30) default null,
    pwd varchar(30) default null,
    primary key(id)
) engine=InnoDB;

MySQL 支持多种不同的存储引擎,每种存储引擎都有自己的特点和适用场景。一些常见的存储引擎有:

  • InnoDB:一个支持事务、行级锁、外键约束和自动恢复的存储引擎,适合处理更新密集和事务型的表。
  • MyISAM:一个不支持事务、表级锁、全文索引和压缩的存储引擎,适合处理选择密集和插入密集的表。
  • Memory:一个将数据存储在内存中的存储引擎,提供了很高的性能,但数据不持久化,适合处理临时和小型的表。
  • CSV:一个将数据存储在 CSV 格式文件中的存储引擎,方便数据的导入和导出,但不支持索引和分区,适合处理简单和可移植的表。
  • Archive:一个用于归档数据的存储引擎,只支持插入和查询操作,不支持索引和更新操作,适合处理大量且不常变化的表。

2.3查询支持引擎

三、 存储引擎InnoDB

介绍
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的 MySQL 存储引擎。
特点

  • DML操作遵循ACID模型,支持事务;
  • 行级锁,提高并发访问性能;
  • 支持外键 FOREIGN KEY约束,保证数据的完整性和正确性;

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

 四、MyISAM

介绍
MyISAM是MySQL早期的默认存储引擎。
特点

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

文件
xxx.sdi:存储表结构信息
xxx.MYD: 存储数据
xxx.MYI: 存储索引

五、存储引擎Memory

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

  • 内存存放
  • hash索引(默认)

文件
xxx.sdi:存储表结构信息
 

六、引擎特点和选择

6.1特点

6.2选择

猜你喜欢

转载自blog.csdn.net/qq_62377885/article/details/132981822