mysql查询语句在哪里(MySQL相关一-)
mysql查询语句在哪里(MySQL相关一-)
2024-11-22 01:36:23  作者:戀情悲殤式  网址:https://m.xinb2b.cn/know/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 语句的执行流程给大家梳理一遍(如果文章哪里有疏漏的话,尽请大家批评指正)。

正文

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

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

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

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

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’为例:


预处理再次生成解析树

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

查询优化器

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

在这步做的事情主要有:

选择最合适的索引;选择表扫还是走索引;选择表关联顺序;优化 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%';


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

select * from information_schema.optimizer_trace\G

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


查询执行计划

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

show status like 'Last_query_cost';

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

查询执行引擎

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

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

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

总结

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


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

  • 星盘相位表先看横还是竖(星盘中的太阳相位看结婚对象)
  • 2024-11-22星盘中的太阳相位看结婚对象太阳和月亮的合相希望有一个可以在人前夸耀的丈夫你的丈夫是一个保守传统的男人,心胸宽大、气质高尚,是一个值得尊敬的好丈夫缺点是具有大男人主义的思想只要你们之间没有太大的社会地位和身份的差距,婚姻应该十分。
  • 童年放牛回忆句子(夜话课文中的经典)
  • 2024-11-22夜话课文中的经典十三岁的际遇田晓菲﹏蓦然回首,我仿佛认出了两年前的自己:短短的头发,天真的目光,还不满14岁,完全是个一脑子浪漫念头的小女孩,对什么都充满了兴趣与好奇纷扬的白雪里,依稀看到她穿着蓝色羽绒衣,在冰冻的湖。
  • 发动机正时怎么修(组装发动机时的正时校对-非常实用)
  • 2024-11-22组装发动机时的正时校对-非常实用在发动机完全分解后,需要组装时,又有一些新的标记为我们提供帮助在正时盖安装好后,链条是不会跑的,这点放心,因为正时盖中专门做了相应的挡片来防止链条脱落1,安装链条首先要平衡轴和曲轴摆对位置链条中,一共。
  • 初中英语同义词组全大总结 中学英语同义词辨析117讲doubt
  • 2024-11-22初中英语同义词组全大总结 中学英语同义词辨析117讲doubt117、doubt,suspect一、doubt及物动词意思是“怀疑、不相信”一般含有否定的意思如果用于肯定句,要接if或whether引导的宾语从句,不能接that引导的从句只有在疑问句和否定句中才。
  • 厦门鼓浪屿自由行旅游攻略(厦门旅游攻略之鼓浪屿)
  • 2024-11-22厦门旅游攻略之鼓浪屿鼓浪屿——来厦门必去的地方,没有之一有“万国建筑博览”之称,钢琴拥有密度居全国之冠,又得美名“钢琴之岛”、“音乐之乡”,是一个非常浪漫的旅游景点,是厦门必打卡之地鼓浪屿位于厦门岛西南隅,隔500米宽的。
  • 美国就业回升的现状(美国就业数据仍维持韧性)
  • 2024-11-22美国就业数据仍维持韧性摘要第一,美国10月新增非农26.1万人,超出市场预期的20.5万人;前值由增26.3万人上修至增31.5万人整体呈现偏强的特征新增非农主要贡献项为医疗保健和下游的服务类行业第三,失业率为3.7%,高。
  • 心理学两个人相处模式(心理学两个人相处)
  • 2024-11-22心理学两个人相处“男人和女人讲道理有没有胜算?”答案是一定会输“我给你发消息的时候,你为什么不回我?”“那个时候,我在工作,没有时间看手机”“那你下班后不会回我呀,你就是心里没有我”“下班了,同事叫我出去吃饭,忘记了。
  • 乔治全网最小快递员(全网最小快递员)
  • 2024-11-22全网最小快递员他是全网最小的“快递员”,靠着给姑姑送饭爆红网络,不到一年时间圈粉500万,2岁萌娃乔治到底有何魅力?身后一个小背篓,这个娃娃不得了,因为和姑姑关系好的不得了,乔治几乎要把整个家都“搬运”给姑姑玉米青。
  • 暖心的留言给女朋友的(暖心的给女朋友的留言)
  • 2024-11-22暖心的给女朋友的留言深深思念肝肠碎,深深情意永相随,深深夜里难入睡,深深梦里有你陪,深深回忆深深愁,深深相思永不悔,深深情谊长流水相信有缘,就应该承认有份,有时间,就应该有距离,所以,嫁给我吧!我们的爱是没有时空界限的缘。
  • 为什么现在微信头像添加国旗 微信怎么给头像加上国旗
  • 2024-11-22为什么现在微信头像添加国旗 微信怎么给头像加上国旗近日,“请给我一面国旗”在广大网友的微信朋友圈刷屏,网友们纷纷在朋友圈发送“给我一面国旗”,然后@微信官方,据说这么做了,头像右下角就会有一个小国旗,引起不少人争相尝试,令朋友圈秒变许愿池据了解,“给。
  • 激励的人生格言(可以激励的人生的句子)
  • 2024-11-22可以激励的人生的句子今天你是否成功取决于你昨天的态度,今天的态度决定了你明天是否成功觉得自己做的到和不做的到,其实只在一念之间没有了爱的语言,所有的文字都是乏味的每一件事都要用多方面的角度来看它美好的生命应该充满期待、惊。
  • 凤凰男最终实力(北京开启姑爷时代)
  • 2024-11-22北京开启姑爷时代如果细论起来,中国最大的、最成功的“凤凰男”,应当是一个叫李春平的人,因为他这只“凤凰”飞到了美国,成为了一位年迈女星的“快婿”,最终继承了女星的巨额遗产在许多人看来,李春平的成功犹如抓,靠的是运气好。