MySQL结构的主要组成

server/2024/12/23 3:22:58/

MySQL 架构主要由以下几个部分组成:

一、连接层

当客户端连接到 MySQL 服务器时,连接层负责建立连接、验证用户身份、进行权限检查等操作

1. 连接管理

  • 处理客户端的连接请求,包括建立连接、断开连接等操作。
  • 维护连接池,提高连接的复用率,减少连接建立和断开的开销。

2. 用户认证

  • 根据用户名、密码和权限表对连接的用户进行身份验证。
  • 确定用户是否具有执行特定操作的权限。

二、服务(Sever)

1. 查询缓存

  • 缓存之前执行过的查询结果。如果新的查询与缓存中的查询完全相同,可以直接返回缓存结果,提高查询性能。
  • 但在某些情况下(如表数据发生变化),缓存会失效,需要重新执行查询。

2. 析器

  • 对 SQL 语句进行语法分析和词法分析,将 SQL 语句分解成数据结构,以便后续处理。
  • 检查 SQL 语句的语法是否正确,识别关键字、表名、列名等。
  1. 优化器
  • 对 SQL 语句进行优化选择索引
  • 根据 SQL 语句和数据库的统计信息,选择最优的查询执行计划。
  • 考虑的因素包括索引的使用、表的连接顺序、查询条件的筛选等,以最小化查询的执行时间和资源消耗。

4. 执行器调用存储引擎接口,返回结果

  • 服务层通过存储引擎接口与各种存储引擎进行交互,实现对数据的存储和检索。
  • 不同的存储引擎具有不同的特点和适用场景,用户可以根据实际需求选择合适的存储引擎。

三、存储引擎层

存储引擎负责实际的数据存储和提取操作,MySQL 支持多种存储引擎(默认InnoDB,5.5之前默认是MyISAM,如 InnoDB、MyISAM、Memory 等。

1. InnoDB

  • 支持事务、行级锁和外键约束,适用于对数据完整性和并发控制要求较高的场景。
  • 采用 B+树索引结构,提高数据的检索效率。

2. MyISAM

  • 不支持事务和行级锁,但具有较高的查询性能,适用于以读为主的场景。
  • 支持全文索引,方便对文本数据进行搜索。

3. Memory

  • 将数据存储在内存中,读写速度非常快,但数据在服务器重启后会丢失。
  • 适用于临时数据或需要快速访问的数据。

四、文件系统层

存储引擎将数据存储在文件系统中,MySQL 数据文件包括:

1. 表文件存储表的数据和结构信息。不同的存储引擎有不同的表文件格式。

2. 索引文件存储索引数据,提高查询效率。

3. 日志文件记录数据库的变更操作,用于数据恢复和复制。例如二进制日志(binlog)用于主从复制,事务日志(redo log 和 undo log)用于保证事务的原子性和持久性。


http://www.ppmy.cn/server/152391.html

相关文章

35. Three.js案例-创建带阴影的球体与平面

35. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中用于渲染场景的主要类之一,它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters : Object) 参数类型描述parametersObject可选…

STM32, GD32 cubemx CAN 低速率125kbps 报文丢失,解决了

用STM32 CUBEMX生成的GD32的 can程序,在500K波特率时可以正常使用,没有发现丢包,但速率降到250k和125k时,发送138帧数据,会丢失5个包。(系统时钟168M,APB1的时钟42M) 试了各种方法无…

华为DHCP高级配置学习笔记

1.基于接口的DHCP配置 1.1配置R1 sys sysname R1 undo info-center enable dhcp enable 全局下开启DHCP功能 interface Ethernet0/0/0 ip address 192.168.1.1 255.255.255.0 dhcp select interface 在e0/0/0接口上启用基于接口的 DHCP服务 dhcp server dns-list 114.11…

基于Python Scrapy的豆瓣Top250电影爬虫程序

Scrapy安装 Python实现一个简单的爬虫程序(爬取图片)_python简单扒图脚本-CSDN博客 创建爬虫项目 创建爬虫项目: scrapy startproject test_spider 创建爬虫程序文件: >cd test_spider\test_spider\spiders >scrapy g…

【守护进程 】【序列化与反序列化】

目录 1. 前后台任务2. 守护进程3. TCP的其它概念4. 序列化与反序列化 1. 前后台任务 我们之前在 信号(一)【概念篇】 介绍过 Crtl c 的本质就是给前台进程发送一个信号,进程执行该信号的默认处理动作,进而终止进程,随…

文献研读|基于像素语义层面图像重建的AI生成图像检测

前言:本篇文章主要对基于重建的AI生成图像检测的四篇相关工作进行介绍,分别为基于像素层面重建的检测方法 DIRE 和 Aeroblade,以及基于语义层面重建的检测方法 SimGIR 和 Zerofake;并对相应方法进行比较。 相关文章:论…

重生之我在异世界学编程之算法与数据结构:深入静态顺序表篇

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、顺序表的概念及结构1. 顺序表…

ELK部署

背景 很多公司还是在单体项目中苦苦挣扎,没有必要上elk系统,大家都懂的一个原则系统的技术栈越多系统越复杂,维护起来也越麻烦,在没有大流量高并发的情况下我们就用单体服务挺舒服。我们行业的特殊性做的都是BTB的项目&#xff0…