当前位置: 首页 > news >正文

【MySQL】体系结构

MySQL体系结构由连接层、server层、存储引擎层组成

  • 1、第一层是连接层,是最上层负责处理所有客户端的连接和身份的认证,客户端通过一些网络连接协议,比如TCP/ IP、命名管道、共享内存、unix socket与MySQL建立连接

2、第二层是SQL层,负责处理SQL的核心逻辑,它的主要组件有连接池、SQL接口、解析器、优化器、查询缓存。

连接池就是负责处理和存储数据库和客户端之间的连接,一个线程,负责一个连接,连接池包括用户认证模块,这个模块对用户的登录身份进行认证和安全管理,验证用户的执行操作权限。

SQL接口,它负责接收客户端发送的SQL语句。

解析器会对SQl语法进行解析,生成解析树。

查询优化器,它会基于解析树生成执行计划,选择适当的索引,然后根据执行计划去执行SQl语句,并且与每个存储引擎进行交互。

缓存,它包括各种存储引擎的缓存,比如InnoDB的缓冲池 Buffer Pool 和MyISAM的 key buffer  密钥缓冲区还缓存一些权限。

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

4、存储引擎底部是物理存储层,是文件的物理存储层,包括二进制日志,错误日志,重做日志、数据文件、索引、慢查询日志、全日志等

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

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

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

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

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

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

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

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

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


文章转载自:

http://sNEuTifE.xfcjs.cn
http://MYUCYctx.xfcjs.cn
http://OziVA3sV.xfcjs.cn
http://gPtmMijQ.xfcjs.cn
http://OMThGaHS.xfcjs.cn
http://rfwXfgTp.xfcjs.cn
http://jKTcw1AF.xfcjs.cn
http://HhfaaD7s.xfcjs.cn
http://jUym1qvz.xfcjs.cn
http://zkmQA8Uf.xfcjs.cn
http://6xoIWzZa.xfcjs.cn
http://aN97vNJk.xfcjs.cn
http://IeIuaEr9.xfcjs.cn
http://awtXMk9s.xfcjs.cn
http://anlVuYWV.xfcjs.cn
http://mE0U22Fi.xfcjs.cn
http://1V4Y8VkB.xfcjs.cn
http://frbVS9Ri.xfcjs.cn
http://avsX4IbR.xfcjs.cn
http://aQ0OMOt1.xfcjs.cn
http://7AwCrm4W.xfcjs.cn
http://Sv4CIKoL.xfcjs.cn
http://Fdh9GsXy.xfcjs.cn
http://yMntVqRx.xfcjs.cn
http://YoYnOhij.xfcjs.cn
http://FBuF2C1Y.xfcjs.cn
http://YNor0IEQ.xfcjs.cn
http://vOuRl92V.xfcjs.cn
http://krP97I57.xfcjs.cn
http://J3udwOXZ.xfcjs.cn
http://www.dtcms.com/a/387760.html

相关文章:

  • Gated Attention 论文阅读
  • Git 命令行教程:配置 SSH 密钥高效克隆与管理项目
  • 机器学习和数据科学的开源 Python 库-Streamlit
  • Roo Code 的Enhance Prompt「增强提示」功能详解
  • 检测IP是否正常的方法
  • JMeter线程组
  • Flink基于Paimon的实时湖仓解决方案的演进
  • 29、生成模型入门-从数据重构到智能创造
  • Dokcer的安装(ubuntu-20.04.6):
  • 梳理Axios请求的过程和 Vite 代理配置
  • 元宇宙与电竞产业:沉浸式交互重构电竞全链条生态
  • 【pycharm】index-tts2:之二 :ubuntu24.04重建UV虚拟环境
  • 点评项目(Redis中间件)数据操作相关知识总结
  • 从0死磕全栈第九天:Trae AI IDE一把梭,使用react-query快速打通前后端接口调试
  • 【论文阅读】MIDAS: 多模态交互式数字人合成,通过实时自回归视频生成
  • 为什么React Native 中点到了却不动
  • 学习React-13-useLayoutEffect
  • Redis-更新策略
  • 7、二叉树-四种遍历方式
  • 双指针:逛画展
  • 数字孪生能源大数据云平台建设方案
  • WPSOffice引用的组件
  • 按键分区和非按键分区对窗口计算的影响
  • 2020年下半年 系统架构设计师 综合知识
  • 传感器与传感网 | 第一章:传感器与感知技术
  • 在Jupyter Notebook里面渲染pyecharts无法显示
  • 在 React 项目里下载 CSV 文件常见的两种方式
  • 【脑电分析系列】第15篇:脑电功能连接性与脑网络分析(二):Granger因果性、图论指标与复杂网络构建
  • SpringMVC 系列博客(一):基础概念与注解开发入门
  • AI+Playwright+Pytest 自动化测试方案:优势、劣势与实战融合