06|Mysql内部组件结构

在这里插入图片描述

1. 连接器

客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的

mysql -h host[数据库地址] -u root[用户] -p root[密码] -P 3306

连接步骤:
1、如果用户名或密码不对,你就会收到一个"Access denied for user"的错误,然后客户端程序结束执行。
2、如果用户名密码认证通过,连接器会到权限表里面查出你拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限

一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置

2. 查询缓存

MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端
查询缓存弊端:
查询缓存往往弊大于利。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低

3. 分析器

如果没有命中查询缓存,就要开始真正执行语句了。首先,MySQL 需要知道你要做什么,因此需要对 SQL 语句做解析。
分析器先会做“词法分析”。你输入的是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么。
MySQL 从你输入的"select"这个关键字识别出来,这是一个查询语句。它也要把字符串“T”识别成“表名 T”,把字符串“ID”识别成“列 ID”。
做完了这些识别以后,就要做“语法分析”。根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。
如果你的语句不对,就会收到“You have an error in your SQL syntax”的错误提醒,比如下面这个语句 from 写成了 “rom”

在这里插入图片描述
SQL语句经过分析器分析之后,会生成一个这样的语法树
在这里插入图片描述

4. 优化器

优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序;以及一些mysql自己内部的优化机制。

5. 执行器

如果有执行权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年华为OD机试真题-高效货运-Python-OD统一考试(C卷)

题目描述: 1.老李是货运公司承运人,老李的货车额定载货重量为wt 2.现有两种货物,货物A单件重量为wa,单件运费利润为pa,货物B单件重量为wb,单件运费利润为pb 3.老李每次发车时载货总重量刚好为货车额定载货重…

ChatGPT第四讲

ChatGPT的回答从哪里来? ChatGPT回答问题时通常比问题本身更长,这是因为它需要通过补充额外的信息来提供完整的答案。它的回答来源于对现有信息的抽取和整合,那么具体是怎么进行抽取和整合的呢,下面我们带着这个疑问来详细讨论一下…

【转载】Windows 11 任务栏位置调整

更改注册表(部分win11版本有效) Win R快捷键打开「运行」——执行regedit命令打开「注册表编辑器」进入路径: 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3 修改Settings这个二进制的第 2 行…

前端同时传递文件数据+非文件数据,前后端解决方案

之前录制视频《文件上传组件》的时候有位观众提了个问题,如果我没有理解错的话,应该就是前后同时传递文件数据 非文件数据,前后端数据该如何接收,这里我给出我自己的解决方案 tip:下文在编写前端代码的时候,用到了这篇…

使用WebAssembly提升Web应用性能

文章目录 使用WebAssembly提升Web应用性能引言一、什么是WebAssembly1. WebAssembly的定义2. WebAssembly的目标和用途 二、WebAssembly与JavaScript的比较1. 执行速度2. 类型检查3. 内存管理4. 适用场景 三、WebAssembly的优势1. 提升性能2. 安全性3. 可移植性4. 集成性 四、如…

MYSQL安装及卸载

目录 一、下载 二、解压 三、配置 1. 添加环境变量 2. 初始化MySQL 3. 注册MySQL服务 4. 启动MySQL服务 5. 修改默认账户密码 四、登录MySQL 五、卸载MySQL 一、下载 点开下面的链接:MySQL :: Download MySQL Community Server 点击Download 就可以下载对…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符,如C盘、D盘、E盘 Linux没有盘符这个概念,只有一个根目录 /,所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中,路径之…

真实与虚幻的边界:算法备案的重要不言而喻

曾经需要耗费大量时间和精力的人脸生成、替换,现在只需通过先进的深度合成算法便能轻松实现;而以往难以触及的人物属性编辑和操控,如今也已成为创作者手中的得力工具。深度合成技术在图像和视频编辑领域的应用,已然掀起了革命性的…

【AI绘画·24年1月最新】Stable Diffusion整合包安装!解压即用--秋葉aaaki 大佬的作品,试用

前言 Stable Diffusion 之前费老大的劲部署安装,解决报错。搞完之后,突然发现有个现成集成包可以用,真是效率高到不行,今天搞下来试试 我电脑配置: CPU: 12th Gen Intel Core™ i7-12700F 2.10 GHz 内存32G&#xff0…

Vuex使用之Vue3

1. 搭建Vuex环境 创建文件:src/store/index.js //引入Vueximport { createStore } from vuex//准备actions对象——响应组件中用户的动作const actions {jia(context, value) {context.commit(JIA, value)}}//准备mutations对象——修改state中的数据const mutatio…

C++高级面试题:解释 C++ 中的静态断言(Static Assertion)

C高级面试题:解释 C 中的静态断言(Static Assertion)在C中,静态断言(Static Assertion)是一种在编译时对条件进行检查的机制。它类似于传统的 assert 宏,但是静态断言是在编译时进行检查&#x…

腾讯云又双叕降价,云服务器配置优惠价格表2024新版报价

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

ChatGPT与互联网产业的变革浪潮

ChatGPT与互联网产业的变革浪潮 在互联网产业快速发展的当下,ChatGPT的出现无疑是一场革命。作为一款先进的语言处理工具,ChatGPT不仅在技术层面引发了广泛关注,更在实际应用中展现出巨大的潜力和影响力。本文将探讨ChatGPT对互联网产业的影…

nginx使用详解--缓存使用

Nginx 是一个功能强大的 Web 服务器和反向代理服务器,它可以用于实现静态内容的缓存,缓存可以分为客户端缓存和服务端缓存。 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请…

代码随想录算法训练营Day32 || leetCode 122.买卖股票的最佳时机II || 55. 跳跃游戏 || 45.跳跃游戏II

122.买卖股票的最佳时机II 本题思路比较巧妙&#xff0c;将n天之内的利润进行了拆分&#xff0c;例如P(3)-P(1)P(3)-P(2)P(2)-P(1)&#xff0c;按照这个思路&#xff0c;将所有正数差值加起来即可 class Solution { public:int maxProfit(vector<int>& prices) {i…

CAPL编程学习笔记--关于on 事件的详细解释

CAPL编程是比较有特色的一种面向通讯的编程语言。 1&#xff1a;on XXX类型&#xff08;即事件类型&#xff09; 维克多的官方文档对CAPL的描述是一门类C语言&#xff0c;说白了它也是用C写出来的。我们看on&#xff08;注意都是小写&#xff09;事件的代码结构 on * { }&…

【物联网应用案例】开发智能农业解决方案考虑的事项

一、开发智能农业解决方案考虑的事项 正如我们所看到的&#xff0c;物联网在农业中的用例是无穷无尽的。智能设备可以通过多种方式帮助您提高农场的绩效和收入。然而&#xff0c;农业物联网应用程序的开发并不是一件容易的事。 如果您正在考虑投资智能农业&#xff0c;则需要…

设备管理系统解决方案

软件资料获取&#xff1a;软件项目开发全套文档下载_软件项目文档-CSDN博客 1.系统概述 1.1.需求描述 建立设备信息库&#xff0c;对设备相关档案的登录、整理。通过建立完善的设备档案&#xff0c;将设备的各类原始信息进行信息化管理&#xff0c;使设备档案查询工作方便快…

【web APIs】4、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、日期对象实例化方法 二、时间戳三、DOM 节点插入节点删除节点查找节点父子关系兄弟关系 四、案例举例1.显示格式化时间2.倒计时3.学成在线首页4.学生就业信…

一图总结:华为销售体系(铁三角组织LTC流程)

《华为铁三角工作法》阅读了多遍&#xff0c;花了些时间整理了一张图对本书的框架性总结&#xff0c;从流程&#xff08;LTC&#xff09;、组织&#xff08;铁三角&#xff09;、激励和管理三个大方面概览华为销售体系。 核心是一靠流程&#xff0c;二靠团队&#xff0c;而前提…