Mysql快速学习——《一》: Mysql的基础架构
了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高.
思维导图: mysql
基础架构
1. 连接器
Mysql作为服务器,一个客户端的Sql连接过来就需要分配一个线程进行处理,这个线程会专门负责监听请求并读取数据。
这部分的线程和连接管理都是有一个连接器,专门负责跟客户端建立连接、权限认证、维持和管理连接。2. 解析器
SQL解析,就是按照SQL语法,把我们编写的SQL语句进行词法分析,理解这个SQL需要做什么事情.
比如如下SQL语句,就会被解析器给拆成三步逻辑:
select name, age, birthday from user where userId = '007';
- 查询user表;
- 寻找到userId=007的那条数据;
- 将数据中的name、age、country字段信息提取出来;
- 3. 优化器
MySQL的优化器主要是将SQL经过语法解析/词法解析后得到的语法树,通过MySQL的数据字典和统计信息的内容,经过一系列运算,从而得出一个执行计划树的构成。之后MySQL按照执行树的要求,计算得出结果。
优化器的输入是一个语法树,输出是一个执行树(也称为执行计划),SQL优化器的具体模块参考如下图:
mysql优化器.jpg
准备阶段
-- 名称识别:主要包括将找到并补全对应语句的表名,库名等;
-- 语义检查:通过数据字典如果找不到对应的表名,则直接返回报错;
-- 初级语义变换:主要是根据语义规则,把一些外连接直接转成内连接,子查询EXIST转成IN,然后IN再转成SEMIJOIN等功能。逻辑变换
逻辑变换
-- 否定消除:对于多个表达式的和取或析取范式前面有否定的情况,应将关系条件分解成一个一个的,将外面的NOT消除;
-- 等值常量传递:利用了等值关系的传递特性,为了能够尽早执行下推运算(后面会讲到);
-- 常量表达式计算:对于能够立刻计算出结果的表达式,直接计算结果,并将结果与其他条件尽量提前化简。代价优化准备
基于代价的优化主要是用来确定对于每个表,根据条件是否应用索引,应用哪个索引, 确定多表连接的顺序等问题。为了能够进行代价优化,需要尝试各种可能的方法,从而找到一个代价最小的方法。为了能够比较,就需要给定义一个量化指标。
基于代价的优化,主要是为了确定采用如下哪一种方法(如果当前表存在该功能的条件下):
-- 采用哪种索引: 一个表可能有主键,也可能有外键,需要根据条件确定使用哪个索引;
-- 确定JOIN顺序:不同的JOIN顺序对性能影响极大;
-- 确定子查询的执行策略: MySQL执行子查询有相当多的方式, 具体涉及到代价模型, 代价量化方法. 这里先埋个坑, 后续写个文章展开.
- 4. 执行器
这一步就是根据上一步骤优化器生成的SQL执行方案,去调用存储引擎的接口(InnoDB、mysam)完成SQL语句的执行计划,这个SQL引擎操作的有可能是内存数据,也有可能是磁盘文件。
补充:MySQL 8.0 版本直接将查询缓存的整块功能删掉了,日常也不建议开启使用。
文章标签: #MYSQL基础架构 #MYSQL
(注:部分内容来源于网路和一些学习资料,并非本人原著)
喜欢的朋友记得点赞、收藏、关注哦!!!
相关文章:
Mysql快速学习——《一》: Mysql的基础架构
了解mysql的基础架构, 理解大概的实现思想, 更有利与我们知之所以然, 是我们学习mysql起来思路更清晰, 效率更高. 思维导图: mysql 基础架构 mysql基础架构.png 1. 连接器 Mysql作为服务器,一个客户端的Sql连接过来就需要分配一个线程进行处理,这个线程…...
【华为OD机试真题29.9¥】(E卷,100分) - 运维日志排序(Java Python JS C++ C )
最新华为OD机试 题目描述 [运维工程师]采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。 H表示小时(0~23)M表示分钟(0~59)S表示秒(0~59)N表示毫秒(0~999) 时间可能并没有补全,也就…...
rust编程实战:实现3d粒子渲染wasm
源码 纯js实现 fps: wasm实现 通过对比可以看出来 wasm 实现的计算比纯js刷新相对稳定。...
本地部署Navidrome个人云音乐平台随时随地畅听本地音乐文件
文章目录 前言1. 安装Docker2. 创建并启动Navidrome容器3. 公网远程访问本地Navidrome3.1 内网穿透工具安装3.2 创建远程连接公网地址3.3 使用固定公网地址远程访问 前言 今天我要给大家安利一个超酷的私有化音乐神器——Navidrome!它不仅让你随时随地畅享本地音乐…...
Unity自定义区域UI滑动事件
自定义区域UI滑动事件 介绍制作1.创建一个Image2.创建脚本 总结 介绍 一提到滑动事件联想到有太多的插件了比如EastTouchBundle,今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。 制作 1.创建一个Image 2.创建脚本 using UnityEngine; us…...
Redis7——进阶篇(五)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
时序和延时
1、延迟模型的类型 verilog有三种类型的延迟模型:分布延迟 、 集总延迟 、 路径延迟(pin to pin) 1.1、 分布延迟 分布延迟是在每个独立元件的基础上进行定义的。 module M(output wire out ,input wire a …...
高效自动化测试:打造Python+Requests+Pytest+Allure+YAML的接口测试框架
一、背景 在快节奏的开发周期中,如何确保接口质量?自动化测试是关键。通过构建标准化、可复用的测试框架,能显著提升测试效率与准确性,为项目质量保驾护航[1][7]。 二、目标 ✅ 核心目标: ● 实现快速、高效的接口测试…...
[微服务设计]1_微服务
摘要:微服务设计应当是面向服务、适配团队、循序渐进的设计。 目录 开篇引言 微服务 什么样的服务是健康的服务 什么是微服务 面向服务的架构 微服务较传统单体架构多的行为 微服务行为带来的问题 微服务解决的问题 开篇引言 在之前的工作中,有…...
Webservice创建
Webservice创建 服务端创建 3层架构 service注解(commom模块) serviceimpl(server) 服务端拦截器的编写 客户端拦截器 客户端调用服务端(CXF代理) 客户端调用服务端(动态模式调用&a…...
Unity安卓Android从StreamingAssets加载AssetBundle
在安卓下无法获取StreamingAssets目录下所有目录和文件名,所以需要提前将文件名整理成一个文件filelist.txt。 1.用批处理命令将StreamingAssets下所有文件名输出到filelist.txt中 chcp 65001是使用UTF-8编码,否则中文是乱码。 echo off chcp 65001 d…...
【MySQL_06】表的相关操作
文章目录 一、表的基本操作1.1 创建表1.2 修改表结构1.2.1 添加列1.2.2 删除列1.2.3 修改列1.2.4 重命名列1.2.5 添加约束 1.3 删除表1.4 查询表结构1.5 重命名表1.6 复制表1.6.1 仅复制结构1.6.2 复制结构及数据 1.7 清空表数据 二、数据完整性约束2.1 主键约束2.2 唯一约束2.…...
如何选择开源向量数据库
文章目录 评估维度查询性能索引与存储扩展性数据管理能力生态支持 常见向量数据库对比 评估维度 选择开源向量数据库时,需要综合考虑查询性能、数据规模、索引构建速度、生态支持等多个因素,以下是关键的评估维度:选择开源向量数据库时&…...
c#面试题整理4
1.stirng str"",string strnull,俩者有何区别 空字符串占有存储控件,null不占用 2.class与struct的异同 异同class 可继承 引用类型 1.都可以定义方法字段 2.都可实例化,与类的使用几乎一样 struct 不可继承 值类型 只能声明带…...
智能焊机监测系统:打造工业安全的数字化盾牌
在现代工业生产中,焊机作为核心设备之一,其稳定性和安全性直接关系到生产效率和产品质量。德州迪格特科技有限公司推出的智能焊机监测系统,通过先进的技术手段,为工业生产构筑了一道坚固的安全防线。 智能监测,保障焊…...
Centos的ElasticSearch安装教程
由于我们是用于校园学习,所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录,大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...
一二三应用开发平台——能力扩展:多数据源支持
背景 随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...
pandas-基础(数据结构及文件访问)
1 Pandas的数据结构 1.1 Series 特点:一维的数据型对象,包含一个值序列和数据标签(即索引) 创建Series: pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明: data&a…...
数据分析与AI丨AI Fabric:数据和人工智能架构的未来
AI Fabric 架构是模块化、可扩展且面向未来的,是现代商业环境中企业实现卓越的关键。 在当今商业环境中,数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生,新的应用场景不断涌现,前沿探索持续拓展。可遗憾的是&…...
如何根据应用需求选择光谱相机
一、按核心参数匹配需求 光谱范围 农业监测:需覆盖可见光至近红外(400-1000nm),以捕捉作物叶绿素、水分等特征。 地质勘探:需宽光谱(350-2500nm)及高分辨率(3-10nm…...
Element React:构建企业级UI的React组件解决方案
Element React:构建企业级UI的React组件解决方案 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react 作为React开发者,你是否曾为UI组件的一致性和开发效率而困扰?Element React作…...
VAP;SNTRVAP
一、基本信息名称:VAP peptide单字母序列:SNTRVAP三字母序列:Ser-Asn-Thr-Arg-Val-Ala-Pro长度:7 个氨基酸(7‑mer)类型:线性多肽,无 Cys、无 Met、无 Trp,氧化稳定性极佳…...
智能视觉自动化革命:Midscene如何让AI成为你的界面操作员
智能视觉自动化革命:Midscene如何让AI成为你的界面操作员 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否曾幻想过用自然语言就能控制浏览器、手机应用甚至桌面软件&#x…...
GLM-OCR在ComfyUI工作流中的应用:构建可视化OCR处理节点
GLM-OCR在ComfyUI工作流中的应用:构建可视化OCR处理节点 如果你经常用ComfyUI做图片生成或者编辑,可能会遇到一个挺麻烦的事儿:怎么把图片里的文字快速提取出来,然后用到下一步工作流里?比如,你想把一张海…...
Element React深度解析:企业级React组件库的架构设计与实战应用
Element React深度解析:企业级React组件库的架构设计与实战应用 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react Element React是一款基于React框架构建的企业级UI组件库,它为开发者提供了…...
隔离变送器VS普通变送器:为什么你的PLC信号总受干扰?(实测XYS-5531抗干扰性能)
隔离变送器VS普通变送器:为什么你的PLC信号总受干扰?(实测XYS-5531抗干扰性能) 在工业自动化现场,信号干扰就像潜伏的"隐形杀手"——它不会直接摧毁设备,却能让控制系统频繁误动作、数据采集失真…...
避坑指南:VSCode Remote-SSH离线安装时,插件版本不兼容和服务器环境配置的那些坑
深度解析VSCode Remote-SSH离线安装的五大核心难题与实战解决方案 在远程开发日益普及的今天,VSCode的Remote-SSH功能已经成为开发者连接Linux服务器的首选工具。然而当网络环境受限时,离线安装过程中的各种"暗坑"往往让开发者寸步难行。本文将…...
魔兽世界插件开发完全指南:专业API文档与宏工具平台
魔兽世界插件开发完全指南:专业API文档与宏工具平台 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 魔兽世界插件开发是每位进阶玩家提升游戏体验的必经之路,…...
RabbitMQ 3.13.2安装踩坑实录:如何绕过rabbitmq-service.bat install code 1错误
RabbitMQ 3.13.2安装实战:深度解析服务注册失败与系统级解决方案 当你在Windows系统上部署RabbitMQ 3.13.2时,那个刺眼的rabbitmq-service.bat install exited with code 1错误就像一堵突然出现的墙。这不仅仅是简单的安装失败,而是系统权限、…...
Qwen3.5-4B-Claude-Opus-GGUF效果展示:TCP三次握手状态机推理
Qwen3.5-4B-Claude-Opus-GGUF效果展示:TCP三次握手状态机推理 1. 模型能力概览 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个专注于逻辑推理和结构化分析的轻量级AI模型。这个基于Qwen3.5-4B的蒸馏版本特别擅长处理需要分步骤解释的技术问题&#…...
