myql进阶-一条查询sql在mysql的执行过程

目录

1. 流程图

2. 各个过程

2.1 连接器

2.2 分析器

2.3 优化器

2.4 执行器

2.5 注意点


1. 流程图

2. 各个过程

假设我们执行一条sql语句如下:

select * from t_good where good_id = '1'

2.1 连接器

首先我们会和mysql建立连接,此时就会执行到连接器。

连接器的职责是负责和客户端建立连接、获取权限、维持和管理连接。

我们执行sql之前首先要和数据库建立连接。建立连接时如果我们的用户名和密码不正确,那么就会收到“"Access denied for user”的错误提示。

2.2 分析器

建立连接后,我们输入的sql传给mysql。mysql的分析器就开始对这条sql进行分析。

分析器包括词法分析和语法分析。

词法分析:根据输入的sql,识别出来这条sql是由什么字符串组成的,例如上边sql是由select 、from 、t_good等组成,通过词法分析可知这是一条查询语句。

语法分析:词法分析之后,语法分析器就会根据语法规则,判断这条sql是否符合语法。如果不符合语法就会给出相应的提示。

提示如下:

这条语句我们把from写成了form,所以给了语法错误的提示信息。

2.3 优化器

优化器要做的事情是:决定这条查询语句如何执行。

例如:订单表中有多个索引,查询语句应该使用哪个索引进行查询。或者t1表联合t2表查询,到底先查询t1表的内容还是先查询出t2表中的内容呢?

而最终决定使用哪个索引或者哪种查询顺序是根据计算出来的cost来决定。

2.4 执行器

优化器决定了sql到底该如何执行,执行器就是负责按优化器的决定结果进行执行的。

2.5 注意点

查询缓存在mysql8.0版本已经去掉,此处并未提及。

查询缓存的原理:将已经执行过的语句及结果以key-value的形式进行存储,在分析器执行之前先查询是否有这个语句的缓存,如果有,那么执行返回结果。

查询缓存的实际效果:在实际的业务中我们的查询语句往往是动态,例如列表的多条查询,这会导致这个查询缓存的命中率很低。所以在生产环境不建议使用查询缓存。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#mysql 8.0 踩坑日记

事情发生在,修改一个已有功能的时候,正常的参数传递进去接口异常了。查看日志报的 Column date cannot be null 。因为是一直未修改过的功能,首先排除了程序代码问题,首先想到是不是升级过程序的jar包版本,检查下来发…

vivado 使用源文件

使用源文件 概述 源文件包括从AMD IP添加的设计源、知识产权(IP)源目录、RTL设计源、从系统添加的数字信号处理(DSP)源生成器工具和IP子系统,也称为块设计,由IP集成商创建AMD Vivado的功能™ 设计套件。源…

FreeRTOS系统配置

一、前言 在实际使用FreeRTOS 的时候我们时常需要根据自己需求来配置FreeRTOS,而且不同架构 的MCU在使用的时候配置也不同。FreeRTOS的系统配置文件为FreeRTOSConfig.h,在此配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件&a…

年终关账四大财务处理技巧|柯桥会计做账,财税知识

2023年即将落下帷幕,无数公司最忙碌就是“年终关账“这件事了。 “年终关账”不仅是企业内部结算一年经营结果的事,还与企业所得税汇算清缴息息相关,甚至还可能关乎企业税负高低与企业是否依法纳税,千万不可小觑。 同时&#xff0…

K8S存储卷和数据卷

目录 三种存储方式 查看同一容器不同副本的log emptyDir ​编辑 hostPath NFS共享存储 PVC和PV Pv和pvc之间是有生命周期管理的 Pv的状态有四种 支持的读写方式有几种 回收策略 资源回收 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的&#xff0…

Rust-变量

Rust的变量必须先声明后使用。对于局部变量,最常见的声明语法为: let variable:i32 100;与传统的C/C语言相比,Rust的变量声明语法不同。这样设计主要有以下几个方面的考虑。 语法分析更容易 从语法分析的角度来说,Rust的变量声明…

uniapp 实战 -- 创建 uni-admin 项目,部署到 uniCloud 前端网页托管(免费云空间)

创建 uni-admin 项目 可见 只能创建一个超级管理员,创建过后,登录页将不再显示 注册管理员账号 部署到 uniCloud 前端网页托管 部署成功,访问地址可预览效果! https://static-mp-7b65169e-151f-4fbb-a5ba-2125d4f56e3f.next.bs…

ES的索引库操作

索引库操作 索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型&a…

面试宝典之JVM优化

J01、类加载的几个过程? 加载、验证、准备、解析、初始化。然后是使用和卸载了 J02、Minor GC 与 Full GC 分别在什么时候发生? 新生代内存不够用时候发生 MGC 也叫 YGC,JVM 内存不够的时候发生 FGC J03、java 中垃圾收集的方法有哪些? …

navicat for oracle

前言 Oracle中的概念并不是创建数据库,而是创建一个表空间,然后再创建一个用户,设置该用户的默认表空间为我们新创建的表空间,这些操作之后,便和你之前用过的mysql数据库创建完数据库一模一样了。 创建数据库 使用O…

C++20结构化绑定应用实例(二百五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

微信订阅号 服务号区别

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?很多小伙伴想把服务号改为订阅号,但是不知道改了之后具体有什么作用,今天跟大家具体讲解一下。首先我们知道服务号一个月只能发四次文章,但是订阅号每天都可以发…

瑞吉外卖笔记系列(2) —— 完善员工的后台系统登录功能,实现员工信息管理

本文档主要 完善员工的后台系统登录功能,新增员工,员工信息分页查询,启用/禁用员工账号,编辑员工信息 一、完善后台系统登录功能 1.1 问题分析 目前存在的问题是:理论上,用户必须在 http://localhost:808…

宽度优先搜索算法(BFS)详解(超级详细讲解,附有大图)

目录 一.宽度优先搜索(BFS)是什么? 二.图解宽搜(BFS) 三.对比与发现 四。工具——队列 五.模板 六.最后 一.宽度优先搜索(BFS)是什么? 百度百科这样说: 宽度优先搜索…

蓝桥杯省赛无忧 STL 课件15 queue

01 queue队列 02 priority_queue优先队列 接下来介绍几种优先队列修改比较函数的方法 03 deque双端队列 04 例题讲解 https://www.lanqiao.cn/problems/1113/learning/?page1&first_category_id1&problem_id1113输入 5 IN xiaoming N IN Adel V IN laozhao N OUT …

抓交通肇事犯(python)

问题描述: 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下了车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但…

【金融数据分析】计算2023年沪深300行业涨跌幅

本文我们来计算2023年沪深300行业涨跌幅&#xff0c;最后呈现的页面是这样的 先来说后端的代码&#xff0c;计算行业涨跌幅的原理就是将某个行业所有成分股的涨跌幅加起来&#xff0c;然后除以股票数量得到一个平均涨跌幅 // 查询行业涨跌幅public List<CSI300IndustryRankV…

如何将.NET 8.0的ASP.NET Core Web API部署成Windows服务

写在前面 前面写了一篇关于将.NET应用转换成Windows服务的方法&#xff0c;其实真正的目的是为了探索如何将Asp.Net Core Web Api 部署成Windows 服务。基于上一篇的基础&#xff0c;只需把创建 WebApplication 的代码放到 BackgroundService 的ExecuteAsync方法中即可。 其中…

【一】通信协议概述

通信协议概述 简介&#xff1a; 很早之前就思考了要写一下电力系统常用的几种通信协议&#xff0c;一直拖着也没有行动&#xff0c;这次终于下定决心来出一个《通信协议》这样的专栏。电力行业数字化方面资料较少&#xff0c;我理解主要一方面是数字化程度还不高&#xff0c;一…

笔记系统的部署架构

前天给笔记系统打了0.0.3的tag&#xff0c;一个简单的全栈功能闭环基本完成。既然是开源&#xff0c;因此&#xff0c;这里有必要分享一下部署结构&#xff0c;希望能够获得小伙伴们的反馈。 目前整个系统采用docker容器来部署。应用介绍 auth_app: 登录/注册的前端应用 web_ap…