范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

面试官你说说一条查询SQL的执行过程

  为了理解这个问题,先从Mysql的架构说起,对于Mysql来说,大致可以分为3层架构。
  第一层作为客户端和服务端的连接,连接器负责处理和客户端的连接,还有一些权限认证之类。比如客户端通用用户名密码连接到Mysql服务器,还有对于数据库表的执行权限。
  第二层是核心层,基本上Mysql大部分的核心功能都在这一层,包括查询缓存、解析器、优化器之类,比如SQL解析、优化、索引选择,到最后生成执行计划。
  第三层则是存储引擎了,Mysql通过执行引擎直接调用存储引擎API查询数据库中数据。
  通过Mysql的架构分层,我们首先就可以很清晰的了解到一个SQL的大概的执行过程。  首先客户端发送请求到服务端,建立连接。 服务端先看下查询缓存是否命中,命中就直接返回,否则继续往下执行。 接着来到解析器,进行语法分析,一些系统关键字校验,校验语法是否合规。 然后优化器进行SQL优化,比如怎么选择索引之类,然后生成执行计划。 最后执行引擎调用存储引擎API查询数据,返回结果。
  这就是一个很概括性的SQL执行过程,接下来,具体到每个步骤详细说明一下。  查询缓存
  如果你翻看Mysql的官方文档就会知道,查询缓存在5.7.20版本已经被弃用,并且8.0的版本已经删除了。为啥要删除,可能觉得太鸡肋了吧。
  我们可以通过命令来查看查询缓存是否可用。  mysql> SHOW VARIABLES LIKE "have_query_cache"; +------------------+-------+ | Variable_name    | Value | +------------------+-------+ | have_query_cache | YES   | +------------------+-------+
  除此之外,查询缓存还有一些核心参数。更具体的说明可以参考官方文档。
  query_cache_type :是否打开查询缓存,值为012,分别对应为OFFONDEMAND,ON的话则代表开启查询缓存,但是可以通过SELECT SQL_NO_CACHE 来手动禁用,DEMAND则代表只缓存以SELECT SQL_CACHE 开头的SQL语句。
  query_cache_limit :缓存结果大小限制,如果查询结果超过大小则不会被缓存,默认是1M大小。
  query_cache_size :为查询缓存分配的内存大小,他是1024的整数倍。
  query_cache_min_res_unit :查询缓存分配内存块的最小单位,默认为4KB。这是查询缓存分配内存的基本单位,即便比如查询的数据只有1个字节,也会按照最小内存单元大小来分配内存空间。
  在进行SQL解析之前,系统会判断查询缓存是否打开,如果打开,就拿缓存中的查询和传入的查询比较,如果完全一样,就会从缓存中直接返回。
  但是需要特别注意的是,无论大小写、空格还是注释,都会影响缓存的命中结果,也就是说必须完全一样!
  比如以下的SQL大小写不同、多了空格都无法命中查询缓存。  select * from user; SELECT * from user; select   * from user; 解析器&预处理器
  如果查询缓存未命中,就会进入正常的SQL执行环节。
  首先就像我们正常的业务开发一样,第一步都是对参数的规则校验,Mysql也一样,解析器会进行词法语法分析,基于语法规则对SQL进行校验。
  比如关键字是否使用正确啊,或者说关键字顺序是不是正确,比如说你把 select 写成了selct ,order by 写成了by order 。
  如果校验OK,那么就生成一颗"解析树"。
  接着预处理器就是进一步依据合法规则生成的解析树进行校验,比如表名、列名是否存在等等。  优化器
  如果说解析器和预处理器是我们业务逻辑的前置校验环节,优化器就是真正的处理业务逻辑的地方。
  一条查询SQL可以有N种执行方式,优化器的最终目标是找到最好的执行计划,交给执行引擎去执行。
  但是实际使用中我们经常会发现,Mysql经常有选择错索引的情况,我明明有更快的索引,结果它不用,导致搞出了慢查询。
  这是因为Mysql的优化器是基于成本模型的优化器,他只是基于已有的成本计算公式来选择一个成本最低的执行方式,这个执行方式不一定会是最快的,只能说大多数时候,优化器的选择比我们自己的选择更准确。
  总的来说,这个优化过程太复杂了,流程大致就是下图所示,更详细的内容可以看《数据库查询优化器的艺术原理解析与SQL性能》这本书(我实在是懒得看了,吐了)。
  执行引擎
  大部分核心的事情已经被优化器处理完了,最后执行引擎只要根据生成好的执行计划查询数据返回就好了,这一步相对就挺简单了。
  执行引擎只需要根据执行计划的指令调用存储引擎的API就可以了。
  当然这一步如果可以缓存查询结果,那么就在这个阶段把查询结果缓存下来,然后把结果返回给客户端就可以了。  总结
  一图胜千言。
  原文地址:https://mp.weixin.qq.com/s/g6IZ_vtiAIZXLTyudfLNnw

甄嬛传眉庄比甄嬛更龌龊,温实初并非她真爱之人,而是怀孕工具有多少人看完甄嬛传都被沈眉庄与温实初的爱情所感动?他们明明彼此相爱,却因为身份的悬殊,注定不能走到一起。可沈眉庄当真爱温实初吗?说句实在话,她跟甄嬛都背叛了皇帝,可她的动机却比甄嬛时代的红利与趋势!各地政府相继出台政策,扶持电竞行业发展大家好,我是鸿梦星竞小鸿,电竞行业之所以发展迅速,政府的政策支持必不可少,小鸿在这里为大家汇集了些,喜欢关注电竞行业的小伙伴可以了解一下。进入二十一世纪以来,社会经济迅速发展,各大英雄联盟发展历程觉醒丰碑创立过程和初期发展在讲到英雄联盟这款游戏的时候,不得不提到另一款名为DOTA的游戏。DOTA是托生于魔兽争霸3的多人即时对战自定义地图,而英雄联盟则是由DOTA的主要开发者Stev提前上演世冠A组最强对决,AG赢下TTG,获得雷霆杯冠军雷霆杯经过前面几日的比赛,角逐出了争夺冠军的两支队伍成都AG超玩会与广州TTG。7月24日晚,两支战队经过激烈的交锋,最终成都AG超玩会以42的比分战胜了广州TTG,赢下了雷霆杯总LPL官方宣布,多场赛事将延期举行,IG将成为最大受害者相信关注LPL电竞的小伙伴都知道,LPL赛程一旦制定下来,一般情况下都会严格执行下去,除非遇到无可抗拒的特殊情况,才会延期举行。而近日,受台风烟花影响,为保障线下赛事观众选手及工作燃烧热情,成就梦想为热爱电竞的自己加油无限热爱,只为高捧奖杯的那一刻以梦为马,只为功成名就的那一刻电竞是星途,是热爱,更是梦想!从2003年国家认可那一刻起始,就逐渐融入到人们的生活中了,无论是娱乐休闲,还是饭后闲谈,王者荣耀发展历程蜕变重生说起电竞,魔兽争霸DOTA英雄联盟等一个个熟悉的游戏名字,筑建起了中国电竞行业的基石。但在2015年以前,电竞一直是端游的专用名词。直到王者荣耀的横空出世,才打破了这个局面,将电子张月与林有有告别,无奈澄清大牙门天生的,网友鼓励让她受宠若惊三十而已这部剧想必大家都看了吧!因为这部剧讲述了绝大多数人的30岁,可能是因为剧情太过现实了吧!才让会广大网友产生共鸣,再加上这部剧中的演员演技都很不错,让观众很容易就被代入到剧情QG轻取GK,成为B组第一,eStar零封WZ,世冠选拔赛黑马出局8月4日,王者荣耀世冠第二周比赛日开启,首日的三场比赛中,六支战队给我们带来了十分精彩的对决。而这三场比赛的胜负关系也是影响到了整个小组赛的晋级形势,首先MTG31赢下RW侠,从而10年CP要复合?玄彬宋慧乔被拍到一起遛狗,粉丝一语惊醒梦中人娱乐圈中有很多大家曾经看好但是后来没有在一起的明星恋人们,甚至是CP,他们个个郎才女貌,性格契合,就如天生一对一般,每次合体偶都会给大众带来惊喜。玄彬与宋慧乔曾经就是一对甜蜜恋人,LPL夏季赛季后赛赛程出炉IG无缘季后赛,RNG成功逆袭2021LPL夏季赛季后赛安排出炉2021LPL夏季赛经过两个月的激烈对决,如今常规赛也已经只剩下两三天的比赛。根据夏季赛相关规则,常规赛排名前10名的队伍将获得季后赛参赛资格,最
超级玛丽其实就是人生儿时大家一起玩红白机必玩的游戏超级玛丽。从一出来面对第一个蘑菇怪你会发现它长得凶神恶煞要从头顶踩扁。没办法蘑菇怪长得矮小自卑怕被人嘲笑为了不被人嘲笑装着很凶的表情其实很脆弱踩它一角马妹甄姬徐庶,摸鱼开荒开5也不慢作者无冬西界摘要摸鱼也能开5,了解一下?队伍配置这是笔者帮人配将测试的开荒队伍,该配置在公认难度最高的太师乱汉剧本中开荒飞起,摸鱼开荒仍然在次日早上7点成功开5。由于我忘了告诉号主德杯预测激战进行时,上演神级预测?调侃IG是至臻IDI队更多比赛点击德杯进行时上演神级预测,调侃IG是至臻IDI队!就在最近,全新的英雄联盟德玛西亚杯赛事正式拉开帷幕,而在此期间,它也吸引了全网游戏玩家的殷切关注。熟悉这个赛事的网友应该王者荣耀小白扫盲,别再瞎打架了,真心让想赢的队友心累王者荣耀虽然运行已有5。6年,但依然有很多的新玩家,对于游戏内容和玩法还不是很了解,今天小编就来给大家分享一下这款游戏的一些基础知识。1。红buff和蓝buff。游戏内的两种加状态王者荣耀传奇英雄故事多,玩家我最爱夏侯惇王者荣耀中的夏侯惇不仅在传统文化故事背景中拥有传奇的一生,在王者中同样也展示了其骁勇善战的一面,是一位深受玩家喜爱的真英雄。在三国演义中夏侯惇少年时以勇气闻名于乡里。曹操起兵,夏侯怎样的武侠游戏才是玩家需要的?可能需要做减法说起武侠游戏,你首先想到的是什么?很多小伙伴给我的答案都是氪金打怪,升级,这些无聊的字眼。这样一种堪称枯燥的游戏方式,让很多玩家都感到无聊,慢慢地也就弃坑了。所以很多游戏也就随着时11。24三大高胜率英雄推荐!岩雀小丑领衔制胜11。24版本野区的高胜率英雄往往能够帮助同学们高效上分,下面我们就来看看韩服胜率很高的三大英雄吧岩雀塔利娅符文搭配主宰巫术岩雀的一套技能消耗对手不少血量能够完美触发黑暗收割,恶意克制兰陵王的英雄你知道几位最克制兰陵王的五位英雄,众所周知,兰陵王是峡谷里所有无位移脆皮的噩梦,因为他凭借被动隐身,加上高额爆发伤害能够在不经意间瞬秒脆皮,甚至频繁针对让C位经济和等级都降到全场最低。不管兰任天堂警告圣诞节Switch服务器可能不稳定玩家要提前做好准备去年圣诞节,任天堂eShop曾发生过载宕机的事故,而今年圣诞节考虑到许多玩家将购买新Switch游戏和礼品卡,任天堂提前发出了服务器可能不稳定的警告。在任天堂日本客户服务账号上,该英雄联盟手游排位上分,这四个英雄就够了Hello大家好,本期为您推荐四个版本强势英雄,助您排位轻松上分,话不多说,直接上干货。小鱼人小鱼人作为人气非常高的法系刺客,集突进无敌和击飞等优点于一身,无论是对线能力还是边路游UZI成功带火三修流卡莎!8700金币快速成型,QW伤害颠覆理解前言英雄联盟季前赛版本推出了不少新装备,但自从版本更新后,AD的胜率持续走低,玩家纷纷抱怨AD越来越难玩了。其实英雄联盟官方策划曾透露过新版本是打算扶持AD的,可惜策划的良苦用心却