【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)

这篇具有很好参考价值的文章主要介绍了【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

怎么看navicat表的底层逻辑,《MySQL从入门到精通与实战》,mysql,数据库,java,分析器,优化器

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。

       

📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。

       

🏆 InfoQ签约作者、CSDN专家博主/后端领域优质创作者/内容合伙人、阿里云专家/签约博主、51CTO专家 🏆

      

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~ 

本文目录

本文导读

一、MySQL 体系结构

1、Client Connectors (客户端链接)层

2、MySQL Server (MySQL 服务)层

2.1、Connection Pool(链接池)

2.2、Service & utilities (服务治理&工具集)

2.3、SQL interface(SQL接口)

2.4、Parser (解析器)

2.5、Optimizer (查询优化器)

2.6、Caches (缓存)

3、Storage Engines (存储引擎)层

二、 一条 SQL 的内部执行流程

三、链接器

四、查询缓存

1、查询缓存步骤

2、查询缓存使用场景

五、分析器

1、分析器工作原理

六、优化器

七、执行器

总结


本文导读

《本专栏MySQL》已经更新了15篇,基本的知识以及实际应用的一小部分已经更新完毕,如果对MySQL 有一些疑惑,不要陷入一个管中窥豹、盲人摸象的状态,你应该有自己的“一言以蔽之”和对MySQL 的鸟瞰,这可以帮助你从高维度理解问题。

本文就是带你系统性学习MySQL 数据库的体系结构,详细介绍了MySQL的逻辑结构。文章来源地址https://www.toymoban.com/news/detail-791514.html

一、MySQL 体系结构

MySQL 体系结构由 Client Connectors (客户端链接)层、MySQL Server (MySQL 服务)层及 Storage Engines (存储引擎)层组成。

1、Client Connectors (客户端链接)层

它负责处理客户端的链接请求并创建与客户端的链接。目前,MySQL几乎支持所有的链接类型,如JDBC(Java语言的链接)、Python、Go、.NET、C语言等。

2、MySQL Server (MySQL 服务)层

MySQL架构图:

怎么看navicat表的底层逻辑,《MySQL从入门到精通与实战》,mysql,数据库,java,分析器,优化器

MySQL Server层主要包括 Connection Pool 链接池、Service & utilities 服务治理和工具、SQL interface SQL接口、Parser 解析器、Optimizer 查询优化器、Caches 缓存等模块。

2.1、Connection Pool(链接池)

Connection Pool 连接池负责处理和存储数据库和客户端之间创建的链接。

一个线程负责管理一个链接。

连接池包括用户认证模块,该模块对用户的登录身份进行认证、认证和安全管理,即用户执行操作权限验证。

2.2、Service & utilities (服务治理&工具集)

Service & utilities 是服务治理&工具集,包括Backup & Restore(数据备份和还原)、Security(安全)、Replication(复制)、Cluster(聚簇)、Partitioning(分区)、Workbench(工作台)等等集群管理服务和工具。

2.3、SQL interface(SQL接口)

SQL interface负责接收客户端发送的各种 SQL 语句,比如 DML、DDL 和 Stored Procedure (存储过程)、Triggers(触发器)、Views(视图)等。

2.4、Parser (解析器)

Parser 解析器会对 SQL 语句进行Syntactic(语法)、Lexical(词汇)、Semantic(语义)等等解析生成解析树。

2.5、Optimizer (查询优化器)

Optimizer查询优化器将基于解析树生成执行计划,选择适当的索引,然后根据执行计划执行SQL语言,并与每个存储引擎交互。

2.6、Caches (缓存)

Caches 缓存包括各种存储引擎的缓存,例如InnoDB的缓冲池 Buffer Pool 和MyISAM的 key buffer  密钥缓冲区。缓存还缓存一些权限,包括 Session 会话级缓存。

3、Storage Engines (存储引擎)层

存储引擎包括MyISAM、InnoDB、Archive和Memory。MySQL是一个插件存储引擎。只要正确定义了与MySQL Server的接口,任何引擎都可以访问MySQL,这也是MySQL受欢迎的原因之一。

存储引擎底部是物理存储层,是文件的物理存储层,包括Binary(二进制日志)、Error(错误日志)、Redo log、Undo log、Data(数据文件)、Index、慢查询日志、全日志等。

二、 一条 SQL 的内部执行流程

MySQL各功能模块中SQL语句的执行过程:

1、建立链接,通过客户端/服务器通信协议连接到 MySQL;

2、查询缓存,如果启用了 Query Cache (查询缓存),并且在查询缓存期间查询到相同的SQL语句,则查询结果将直接返回给客户端,MySQL优化查询;

如果没有打开 Query Cache (查询缓存)没有查询到确切的SQL语句,解析器将解析语法和语义并生成解析树。

3、预处理器生成一个新的解析树;

4、查询优化器生成执行计划;

5、查询执行引擎执行SQL语句,查询执行引擎,将根据SQL语句中表的存储引擎类型以及相应的API接口与底层存储引擎缓存或物理文件之间的交互来获得查询结果。

6、查询结果将被缓存,并在MySQL Server 过滤后返回给客户端。如果启用了查询缓存,SQL语句和结果将完全保存在查询缓存中。如果以后执行相同的SQL语句,将直接返回结果。

怎么看navicat表的底层逻辑,《MySQL从入门到精通与实战》,mysql,数据库,java,分析器,优化器

三、链接器

连接器负责与客户端建立连接、获取权限、维护和管理连接。

-- 连接命令
mysql -h$ip -P$port -u$user -p
mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306[端口]

当我们输入命令后,MYSQL客户端工具(Navicat、JDBC)会使用跟服务端建立连接,然后经历经历TCP连接(三次握手),连接器将开始验证您的身份。此时,将使用您输入的用户名和密码。

如果用户名或密码不正确,您将收到“拒绝用户访问”(Access denied for user)错误,然后客户端程序结束。

如果用户名和密码经过身份验证,连接器将检查权限表中的权限。稍后,此连接中的权限判断逻辑将取决于此时读取的权限。

如果客户端长时间不移动,连接器将自动断开它。该时间由参数wait_由超时控制。默认值为8小时。

如果客户端在连接断开后再次发送请求,它将收到错误提示:在查询过程中与MySQL服务器的连接丢失。此时,如果要继续,则需要重新连接,然后执行请求。

在数据库中,长连接意味着成功连接后,如果客户端继续有请求,它将始终使用相同的连接。短连接意味着每次执行几个查询后,连接断开,然后重新建立下一个查询。

建立连接的过程通常很复杂,因此建议您尽量减少建立连接的操作,即尝试使用长连接。

四、查询缓存

建立连接后,执行逻辑将进入查询缓存。

1、查询缓存步骤

在MySQL收到查询请求后,它将首先转到查询缓存,以查看此语句之前是否执行过。以前执行的语句及其结果可以以键值对的形式直接缓存在内存中。键是查询语句,值是查询结果。如果查询可以直接在缓存中找到键,则该值将直接返回给客户端。

如果该语句不在查询缓存中,则后续执行阶段将继续。执行后,执行结果将存储在查询缓存中。如您所见,如果查询命中缓存,MySQL可以直接返回结果,而无需执行以下复杂操作,这将非常高效。

-- 默认情况下,可以指定要使用查询缓存的语句
-- 可以用SQL_ CACHE显示去指定。如下:
select SQL_ CACHE from stable where id=10;

-- 查询当前实例是否开启缓存机制
show global variables like "%query_ cache_ type%" ;


-- 监控查询缓存的命中率(查看运行的缓存信息)
show status like ' %Qcache%';

2、查询缓存使用场景

在大多数情况下,不建议使用查询缓存。查询缓存失效非常频繁。只要更新了表,表上的所有查询缓存都将被清除。

对于更新压力较大的数据库,查询缓存的命中率将非常低。除非您的企业有一个静态表,否则它在很长一段时间内只会更新一次。例如,对于系统配置表,此表中的查询适合于查询缓存。

五、分析器

1、分析器工作原理

如果查询缓存未命中,将执行该语句,所以它需要解析SQL语句。

分析器将首先进行“词法分析”。输入由多个字符串和空格组成的SQL语句。MySQL需要识别字符串是什么并表示什么。MySQL是通过您输入的关键字“select”来识别的,这是一个查询语句。它还将字符串“T”标识为“表名T”,将字符串“ID”标识为列ID。

怎么看navicat表的底层逻辑,《MySQL从入门到精通与实战》,mysql,数据库,java,分析器,优化器

完成这些识别后,需要进行“语法分析”。根据词法分析的结果,解析器将根据语法规则判断您输入的SQL语句是否符合MySQL语法。

如果您的语句不正确,您将收到“SQL语法中有错误”的错误提示(You have an error in your SQL syntax)。

六、优化器

在分析器之后,MySQL将知道您想要做什么。在执行之前,优化器必须首先处理它。

当表中有多个索引时,优化器决定使用哪个索引;或者,当一个语句有多个表连接时,确定每个表的连接顺序。

对SQL语法树执行逻辑和物理优化,最后生成SQL执行的执行计划。

逻辑优化,会将SQL语法树中的谓词转换为逻辑代数运算符,从而将语法树转换为关系代数语法树,然后执行一系列逻辑优化,如语义优化、查询优化、冗余减少操作、公共表达式的连接提取、,最后生成逻辑查询执行计划

物理优化,SQL语法树将在逻辑优化后继续修改。如果连接了多个表,则会调整表的连接顺序,SQL语法树也会相应调整。此外,将使用成本估计器来评估扫描单个表的成本和多个表的连接顺序,并选择成本最低的方案作为下一次优化的基础,然后生成物理查询执行计划。

怎么看navicat表的底层逻辑,《MySQL从入门到精通与实战》,mysql,数据库,java,分析器,优化器

七、执行器

MySQL 通过分析器知道做什么,以及如何通过优化器来做,最后进入执行器阶段并开始执行语句。

在执行开始时,您应该首先确定您是否有权对该表T执行查询。如果没有,将返回未经许可的错误。如果有权限,打开表以继续执行。当打开表时,执行器将根据表的引擎定义使用引擎提供的接口不听调用。

总结

《本专栏MySQL》已经更新了15篇,基本的知识以及实际应用的一小部分已经更新完毕,如果对MySQL 有一些疑惑,不要陷入一个管中窥豹、盲人摸象的状态,你应该有自己的“一言以蔽之”和对MySQL 的鸟瞰,这可以帮助你从高维度理解问题。

本文就是带你系统性学习MySQL 数据库的体系结构,详细介绍了MySQL的逻辑结构。

到了这里,关于【MySQL】MySQL体系结构与内部组件工作原理解析(原理篇)(MySQL专栏启动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 简述MySQL体系结构与MySQL的 安装

    简述MySQL体系结构 安装部署MySQL(使用yum以及通用二进制方式) 1.简述MySQL体系结构 MySQL分为四层体系结构,分别是: 连接层 SQL层 插件式存储引擎层 物理文件层 1.连接层: 由connection pool(连接池)构成 目的:解决资源频繁分配、释放所造成的问题,而连接池的作用相当于一

    2024年02月12日
    浏览(29)
  • MySQL的体系结构与SQL的执行流程

    如果你在使用MySQL时只会写sql语句的,那么你应该看一下《MySQL优化的底层逻辑》。如果你只了解到sql是如何优化的,那么你应该通过本文了解一下Mysql的体系结构以及sql语句的执行流程。 先来看下MySQL的体系结构,下图是在MySQL官方网站上扒下来的,所以有很高的权威性和准

    2024年02月05日
    浏览(36)
  • [MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择

    ⭐Hello!这里是欧_aita的博客。 ⭐今日语录: 不要在乎别人怎么看你,因为他们根本就没有时间,他们只关心他们自己。 ⭐个人主页:欧_aita ψ(._. )⭐个人专栏: 数据结构与算法 MySQL数据库 连接层 (连接池)最上层是一些客户端和链接服务,主要完成类似于连接处理、授权认

    2024年02月04日
    浏览(48)
  • 单片机原理与应用以及C51编程技术——硬件体系结构梳理

    内部程序存储器ROM :4K的flash程序存储器; 寄存器区 :4个寄存器区,每个区有R0-R7八个工作寄存器; 8位并行输入输出端口 :P0、P1、P2和P3; 定时/计数器 :2个16位的定时/计数器 T0、T1; 串型口 :全双工串行端口(RXD:接收端、TXD发送端); 中断系统 :设有5个中断源(T

    2023年04月10日
    浏览(69)
  • 初识MySQL:了解MySQL特性、体系结构以及在Linux中部署MySQL

    目录 MySQL简介 MySQL特性 MySQL体系结构 SQL的四个层次: 连接层: SQL层: 插件式存储引擎: 物理文件层: 一条SQL语句的执行流程: MySQL在Linux中的安装、部署 首先需要下载mysql软件包:   MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司

    2024年02月12日
    浏览(35)
  • mysql从入门到放弃之数据库体系结构与管理

    第一篇文章中主要学习了mysql二进制的基本安装及数据库初始化等操作,本篇文章主要了解mysql的体系结构和管理,例如: mysql的实例组成、逻辑存储结构、物理存储结构等方面展开学习 提示:以下是本篇文章正文内容,下面案例可供参考 3.1、mysqld守护进程结构 3.2、 引入sql语句

    2024年01月21日
    浏览(30)
  • 【软件设计师暴击考点】计算机组成原理与体系结构高频考点暴击系列【一】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : 软件设计师考点暴击 下午题 ⭐【软件设计师暴击考点】下午题高频考点暴击系列 上午题目录 进入专栏浏览:

    2024年02月10日
    浏览(31)
  • 深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用

    卷积神经网络(CNN)是一种特别适用于处理具有网格结构的数据,如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统,这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手头有一张手写数字的照片,你希望计算机能够识别出

    2024年04月28日
    浏览(30)
  • 【Azure】微软 Azure 基础解析(四)Azure核心体系结构组件之数据中心、区域与区域对、可用区和地理区域

    本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx 【Azure】微软 Azure 基础解析(四)Azure核心体系结构组件之数据中心、区域与区域

    2024年02月15日
    浏览(35)
  • 软件设计模式与体系结构-软件体系-层次软件体系结构

    层次之间存在接口, 通过接口形成call/return的关系 ,上层是下层的客户端 层次系统的基本构件: 各层次内部包含的构件 连接件: 层间的交互协议 拓扑结构: 分层 拓扑约束: 对相邻层间交互的约束 层次软件体系结构(Layered Software Architecture)是一种常见的软件设计模式,

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包