mysql查询语句在哪里(MySQL相关一-)
mysql查询语句在哪里(MySQL相关一-)
2024-07-01 12:49:24  作者:戀情悲殤式  网址:https://m.xinb2b.cn/sport/hov501251.html

前言

学习一个新知识最好的方式就是上官网,所以我先把官网贴出来 MySQL官网 (点击查阅),如果大家有想了解我没有说到的东西可以直接上官网看哈~目前 MySQL 最新大版本为8.0,但是鉴于目前应用比较多的还是 5.7,所以今天在这里还是针对 5.7 来做讨论。

看了官网关于 MySQL 的介绍之后,我发现一个有趣的事情。在我身边的同事,很多都是把 MySQL 读错了,当然,也是因为大家已经约定俗成了,所以我卖的关子是,MySQL 大家一般会都成 my sequel,但是在官网上读法是这样的[ My Ess Que Ell ],即把 s q l 分开来读。当然这个不重要啦,这里只是跟大家唠嗑一下哈哈~想验证的伙伴可以点击这个What is MySQL?

下面开始进入正题:

下面是 MySQL 的发展过程,目前的系统基本上都是分布式微服务的了,由于支持事务的特性,所以 innodb 为默认的存储引擎,也是我们今天课程的主角。(MyISAM 和 Innodb 的区别在此不做赘述,想了解 MySQL 的引擎可至 MySQL 引擎链接查阅。

mysql查询语句在哪里(MySQL相关一-)(1)

接下来我们会以这张脑图的一些知识点展开来讲,但是由于文章篇幅有限,有些点可能只会一笔带过,有兴趣的小伙伴可以到我的公众号下与我留言讨论。

我们今天的重点,在于将 MySQL 语句的执行流程给大家梳理一遍(如果文章哪里有疏漏的话,尽请大家批评指正)。

正文

一条查询语句是如何执行的

查询语句的执行分为以下几步:

查询缓存解析器生成解析树预处理再次生成解析树查询优化器查询执行计划查询执行引擎查询数据返回结果查询缓存

通过如下语句可查看缓存开关情况(默认关闭):

show variables like 'query_cache%';

MySQL 拿到一个查询请求后先会在查询缓存中看看是否执行过此语句,之前执行的语句会以 key-value 的形式缓存在内存中,key 是缓存的语句,value 是查询的结果如果命中缓存则直接将结果返回,如果没有命中则继续执行后面

在 MySQL 中默认是关闭的,官方也建议关闭,将缓存交托给第三方如 redis 处理,为啥:

查询缓存的失效特表频繁,对一个表的更新都会失效这个表所有的查询缓存,对于更新频繁的表命中率太低MySQL 8.0 直接删除查询缓存解析器生成解析树

1.语法解析

语法解析是解析你的语句是不是满足 MySQL 语法标准,如果不对则会 :

ERROR 1064 (42000): You have an error in your SQL syntax … 关于错误码在官网有说明

2.词法解析

关于解析完生成的解析树类似下图,我以’select name from user_info where sex=1 and age>20’为例:

mysql查询语句在哪里(MySQL相关一-)(2)

预处理再次生成解析树

语义解析,在语法及词法解析完之后,进行预处理之后再次生成解析树。

查询优化器

在这一步将前面生成的解析树优化成一个执行计划。

在这步做的事情主要有:

选择最合适的索引;选择表扫还是走索引;选择表关联顺序;优化 where 子句;排除管理中无用表;决定 order by 和 group by 是否走索引;尝试使用 inner join 替换 outer join;简化子查询,决定结果缓存;合并试图;

顺便提一下,optimizer_trace 优化器追踪器,在 MySQL 中是默认关闭的(毕竟开启也会消耗性能嘛对吧),可以使用 set 语句修改一下 optimizer_trace的开关,感受一下:

set optimizer_trace='enabled=on '

先查询优化器追踪的开关:

show variables like 'optimizer_trace%';

mysql查询语句在哪里(MySQL相关一-)(3)

执行完一条语句之后执行下面语句查看优化器追踪:

select * from information_schema.optimizer_trace\G

可以看到一个 json 类型的字符串,主要是语句优化的三个阶段,篇幅有限,这里不展开,对照着看应该可以看懂。

mysql查询语句在哪里(MySQL相关一-)(4)

查询执行计划

查询最后一次查询的消耗,用以比较开销:

show status like 'Last_query_cost';

在这一步选择开销最小的计划执行

查询执行引擎

这里执行器会先对权限做一个判断,如果有权限,才会执行以下步骤,否则跑出权限异常:

调用 Innodb 引擎接口获取这个表的第一行,判断ID是否为10,如果不是跳过,如果是则存在结果集中;引擎执行下一行,重复判断相同的逻辑,直到最后一行;最后将满足结果的结果集返回;对于有索引的表也差不多,第一次是调用满足结果的第一行接口, 下来是查找满足结果的下一行接口查询数据返回结果

将查询数据的结果返回给查询的客户端,如果有缓存则返回缓存(前面已经说了默认关闭),可以说就大功告成了哈哈哈哈,真是曲折。

总结

经过上面一系列的梳理,相信大家对 MySQL 查询语句的流程也有了一个大致的了解,下面是针对查询语句的流程做的一张图,方便大家记忆理解:

mysql查询语句在哪里(MySQL相关一-)(5)

原文链接:https://blog.csdn.net/weixin_42669785/article/details/104107328

  • 小鹿脱口秀大会合集 笑西西脱口秀鹿鹿
  • 2024-07-01小鹿脱口秀大会合集 笑西西脱口秀鹿鹿笑西西脱口秀鹿鹿封面人物|鹿鹿编辑|笑笑摄影|菜菜等1刚接触脱口秀是在2017年底那个时候脱口秀的风还没有吹遍全国,甚至还没有在一线城市占住地盘北京、上海的脱口秀演员每周的脱口秀开放麦数量还是屈指可数。
  • 考研英语必考词汇及翻译(考研英语简单词汇list)
  • 2024-07-01考研英语简单词汇list简单的词汇的记忆就短时间大量的过,看到单词能在脑海中反应出中文意思就可以了背诵方法如下:一次过100个词汇,捂住中文,只看英文,如果能反应出这个单词的含义,那么这个单词就算过;如果反应不出单词的中文含。
  • 冰糖蒸木瓜的做法(你见过这么可爱的蒸木瓜吗)
  • 2024-07-01你见过这么可爱的蒸木瓜吗木瓜大家都熟悉,一般情况下,我都是用来干吃或者是炖煮着吃,其实木瓜生吃起来味道还是比较淡的,个人更喜欢稍稍加工一下,赋予它更丰富的味道今天呢,想要换一种吃法来试试味道怎么样我今天吧木瓜给蒸了,希望大家。
  • 征信报告详解及注意事项(征信报告看不懂)
  • 2024-07-01征信报告看不懂征信在我们的生活中越来越重要,小到衣食住行,大到买房买车都需要看征信,很多人去银行贷款的时候,银行都会让你去拉一份征信报告说道征信报告,很多人都听说过,甚至有不少人也都拉过,但是,你真的懂征信报告吗?。
  • 关于签合同需要注意的事情(2022签订合同需要注意哪些问题)
  • 2024-07-012022签订合同需要注意哪些问题2022签订合同需要注意哪些问题1、要认真审查签约对象的主体资格和资信能力,以便在供货及付款条件上采取相应的对策,防范欺诈、减少交易风险2、争取合同的起草权、并以书面形式对谈判中所取得的承诺进行约定3。
  • 花瓶插花技巧(教你插出漂亮花朵)
  • 2024-07-01教你插出漂亮花朵团体捆扎法:有些野生草花,花色艳丽动人,但花却很小,一二枝花卉体现不出美,好的效果往往要在集中起来才能显露因此,在插花时可将花卉握成—团,用绳索或金属丝扎住,然后插入花插座连体法:花插座的大小是有限的。
  • 虎睛石为什么要消磁(虎睛石消磁方法)
  • 2024-07-01虎睛石消磁方法流动水消磁:找个玻璃杯或陶瓷然后把水晶放进去,放在自来水龙头下开小水几乎滴水可滴水速度比较快的状态,让水一滴滴的打入碗中,期待水整体都在微微震动,可以及时的彻底消磁这样子消磁持每次持续时间10分钟到半。
  • 关晓彤和白敬亭同框过吗(关晓彤和白敬亭恋爱)
  • 2024-07-01关晓彤和白敬亭恋爱最近95后小花关晓彤可是火得不要不要的,各种花式上热搜,这一次竟然是因为恋情哦!豆瓣八组网友曝料白敬亭和关晓彤在一起了,还列出了不少两个人在微博上的暧昧互动证据起因是关晓彤发了一组写真带上了冷漠狗的表。
  • x的天使人物爱迪介绍
  • 2024-07-01x的天使人物爱迪介绍爱迪中文名:爱德华·梅森日文名:エドワード·メイソン英文名:Edward·Mason(简称Eddie/エデイ)CV:藤原夏海年龄:自称和Ray年龄相仿身高:154cm血型:A型生日:4.30星座:金牛。
  • 云南十八怪的风俗传闻(云南18怪顺口溜都有哪些含义)
  • 2024-07-01云南18怪顺口溜都有哪些含义云南十八怪顺口溜你说奇怪不奇怪,云南就有十八怪四个竹鼠一麻袋,蚕豆花生数着卖;袖珍小马多能耐,背着娃娃再恋爱;四季衣服同穿戴,常年能出好瓜菜;摘下草帽当锅盖,三个蚊子一盘菜;石头长在云天外,这边下雨那。
  • 义和团起源于山东冠县哪里(痛失山东教案义和团)
  • 2024-07-01痛失山东教案义和团“中国不能失去山东,就像西方不能失去耶路撒冷”这句台词出自电影《我的1919》,是由陈道明饰演的中国外交官顾维钧在巴黎和会上当着各国代表说出的事实上,这句台词并非电影首创,巴黎和会之后,“耶路撒冷之寓。
  • 武汉经开区门户网(武汉经开区二次创业)
  • 2024-07-01武汉经开区二次创业▲武汉经开区加快建设“双智之城”“未来之城”“希望之城”,缔造美好环境,创造幸福生活,生态美、生活美、生产美的美好画卷徐徐展开造聪明的车“车谷造”汽车驶向电动化智能化高端化武汉经开区因车而建,因车而兴。