mysql 一条查询语句执行过程顺序

news2024/10/6 18:29:00
整体架构

在这里插入图片描述

client connectors:

mysql提供各种语言连接客户端api,client发送sql语句到server端进行执行

连接器(Connectors):连接器负责客户端与服务端进行连接,使用mysql协议或X协议使得客户端可以通过api能够访问mysql底层资源,执行sql语句。mysql提供多种语言的连接器,基本上常见的语言都有。

连接控制:当客户端连接数据库时,会根据服务端配置来校验当前客户端允不允许连接数据库,比如ip配置是否运行,是否达到最大连接数等。

用户认证:校验登录用户名密码信息,IP或者可能的证书信息。

权限校验:获取当前用户操作权限、每次在分析发送sql语句前校验当前用户是否有对应数据操作权限。

MySQL Server (mysqld)

mysqld是服务端主要的程序,包含有以下几个服务功能。

SQL接口(SQL Interface):所有数据库可执行语句,包括DML、DDL、存储过程、视图、触发器等的语法接口定义。还有内置函数定义。这些东西都是跨存储引擎的。都是在mysqld中定义实现的。

分析器(Query Parser):一条语句发送到服务端,首先会分析sql语句的语法是否正确,将整个语句解析成不同的部分,供后面执行使用。

优化器(Query Optimizer):对解析后的sql语句不同的执行计划进行评估,选择合适的执行计划来提高数据库执行效率。比如多个索引时如何使用索引,多个表关联查询时关联顺序是怎样的。这个时候一些执行计划的统计及耗时记录是有存储引擎来完成的,优化器会和具体执行引擎进行交互来选择效率高的执行计划。

缓存和缓冲区(Caches & Buffers):这里缓存的种类有很多。像缓存了打开的表的信息,避免频繁的打开和关闭表。存储引擎的数据缓存,查询缓存等等有很多。主要是为了提高性能。

存储引擎

存储引擎负责数据库中数据的存储、提取和管理。mysql存储引擎是插件式的模式,用户可以方便使用不同的存储引擎,常见存储引擎InnoDB、MyISAM、Memory等。在创建表时候可以使用ENGINE=InnoDB来指定使用存储引擎,从5.5版本开始,默认存储引擎是InnoDB。

文件系统

文件系统存储不同类型数据。有数据文件、索引文件、日志文件等。

查询语句执行顺序

1、首先是from,join来确定表和数据范围

2、where对数据进行筛选过滤

3、group by分组和having过滤

4、select抽取对应的列,如果有DISTINCT 进行去重。

5、合并各组的结果进行order by 排序

6、LIMIT限制返回的行数

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

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

相关文章

【性能测试】混合业务场景按比例设计

已知从生产环境中统计出的接口比例如下所示: 接口接口比例接口140%接口220%接口330%接口410% 场景一:以上接口无上下依赖关系,设计出容量场景 接口1比例如下: 接口2比例如下: 接口3比例如下: 接口4比例如…

速卖通半托管优缺点是什么?速卖通半托管和全托管的区别是什么?速卖通半托管怎么发货?

1月5日,阿里速卖通AliExpress正式向全体卖家推出半托管模式,并且官方连续发放多重补贴,重金加码半托管模式,推广力度非常大。 关于速卖通半托管服务春节补贴政策 图源:阿里巴巴全球速卖通官方 由此可见,半…

C语言第十四弹---函数递归

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 函数递归 1、递归是什么? 1.1、递归的思想: 1.2、递归的限制条件 2、递归举例 2.1、举例1:求n的阶乘 2.1.1、分析和代码…

备战蓝桥杯---数据结构与STL应用(入门3)

我们先来一道题作为过渡&#xff1a; 我们只需枚举n,选出左右第一个小于它高度的坐标即可&#xff0c;于是我们可以用两个方向的优先队列来维护&#xff0c;下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; #define int long long int n; struct …

flutter+go构建的即时通讯app,ChatCraft

前言 Hi&#x1f44b;all.好久不见&#xff0c;已经两个多月没有发文章了&#xff0c;这段时间一直在反思过去的一年&#xff0c;有好有坏。对博客文章这块我对自己是不满意的&#xff0c;文章的质量参差不齐&#xff0c;有时候在没有好的题材时&#xff0c;我会选择写一些泛泛…

9.SELinux

目录 1. 概述 1.1. 概念 1.2. 作用&#xff1a; 1.3. SELinux与传统的权限区别 2. SELinux工作原理 2.1. 名词解释 2.1.1. 主体&#xff08;Subject&#xff09; 2.1.2. 目标&#xff08;Object&#xff09; 2.1.3. 策略&#xff08;Policy&#xff09; 2.1.4. 安全上…

河南省考后天网上确认,请提前准备证件照哦

✔报名时间&#xff1a;2024年1月18号一1月24号 ✔报名确认和缴费&#xff1a;2024年1月 31号一2月4号 ✔准考证打印&#xff1a;2024年3月12号一3月17号 ✔笔试时间&#xff1a;2024年3月16日-2024年3月17日。 ✔面试时间&#xff1a;面试时间拟安排在2024年5月中旬 报名网址&…

ChatGPT学python: 用json文件传参

目录 json语法最简陋版python解析语法小结 json语法最简陋版 param.json [{"Table_name": "table1","Event_name_colum": 4,"update_colum": 9},{"Table_name": "table2","Event_name_colum": 3,&quo…

快速掌握,制作可发送上课通知小程序的秘籍

对于教育培训机构来说&#xff0c;及时通知学生上课时间、地点等重要信息是至关重要的。而现在&#xff0c;通过小程序&#xff0c;我们可以更加便捷地实现这一目标。下面将为你介绍如何制作一个可发送上课通知的小程序。 首先&#xff0c;通过百度搜索“乔拓云”&#xff0c;并…

NFS 网络文件系统

1. NFS简介 NFS&#xff08;Network File System 网络文件系统&#xff09;&#xff0c;是一种用于在计算机网络上共享文件的协议。它允许一个计算机系统通过网络将其文件和存储设备共享给其他计算机系统&#xff0c;使得这些系统可以像访问本地文件一样访问网络共享的文件。 N…

excel中提取一串数字中的某几个数字

excel中提取一串数字中的某几个数字 提取一串数字中的某几个数字&#xff0c;使用公式函数截取数据 LEFT函数&#xff1a;用于截取单元格左边的字符&#xff0c;例如“LEFT(A1,5)”会返回A1单元格中的前5个字符。RIGHT函数&#xff1a;用于截取单元格右边的字符&#xff0c;例…

如何設置動態住宅IP代理管理工具SwitchySharp插件

動態住宅IP代理管理工具SwitchySharp擴展程式專為Chrome設計&#xff0c;可讓用戶更輕鬆地管理代理設置&#xff0c;並以其簡單性和靈活性著稱。本文我們將討論SwitchySharp插件的功能、優點、如何設置。 Proxy SwitchySharp插件具體有什麼用&#xff1f; 此工具是專為Chrome設…

汽车软件开发模式的5个特点

汽车软件开发属于较为复杂的系统工程&#xff0c;经常让来自不同知识背景的工程师在观点交锋时出现分歧。在解决复杂性和对齐讨论基准时&#xff0c;可以通过勾勒出讨论对象最关键的几个特征来树立典型概念。本文旨在通过5个典型特点的抽取&#xff0c;来勾勒出汽车软件开发模式…

Flask 入门2:路由

1. 前言 在上一节中&#xff0c;我们使用到了静态路由&#xff0c;即一个路由规则对应一个 URL。而在实际应用中&#xff0c;更多使用的则是动态路由&#xff0c;它的 URL是可变的。 2. 定义一个很常见的路由地址 app.route(/user/<username>) def user(username):ret…

STM32 IIC电量计LTC2944

1 描述 LTC2944 可在便携式产品应用中测量电池充电状态、电池电压、电池电流及其自身温度。宽输入电压范围允许使用高达 60V 的多节电池。精密库仑反向积分电流通过电池正极端子与负载或充电器之间的检测电阻器。 电压、电流和温度由内部 14 位无延迟 ΔΣ™ ADC 测量。测量结…

GBASE南大通用数据库对与例程相关联的对象的权限

数据库服务器检查是否存在任何被引用的对象&#xff0c;并验证调用该例程的用户是否拥有访问被引用的对象的必要权限。 由例程引用的对象可包括&#xff1a; • 表和列 • 序列对象 • 用户定义的数据类型 • 由该例程执行的其他例程 当例程运行时&#xff0c;定义有效的权…

第六篇:express路由拆分(模块化)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4d8; 引言&#xff1a; &#x…

elasticsearch的基本使用

使用postman进行测试 如下图所示&#xff1a; 需要进行验证&#xff0c;请选择Authorization中的basic auth,填写账号以及密码。 添加ik中文分词 安装 IK 分词器插件&#xff1a; 下载 IK 分词器插件&#xff0c;可以从 GitHub 上的 elasticsearch-analysis-ik 页面下载最好…

学习使用vite+vue3的所遇问题总结

组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default …… setup 是后者的语法糖 在Vue.js中&#xff0c;你可以通过route对象…

Python学习--一个逻辑推理的猜数字的游戏

修订Pico Fermi Bagels猜数字游戏代码&#xff0c;仅用于学习Python。 运行界面如下&#xff1a; 修订的代码如下&#xff1a; # // # 提升逻辑思维猜数字小游戏 # BY&#xff1a;Al Sweigart alinventwithpython.com # 翻译&#xff1a;诚外无物 # 说明&#xff1a;一个逻辑…