首页 > 其他分享 >简述一条查询语句的执行过程

简述一条查询语句的执行过程

时间:2022-08-18 11:27:26浏览次数:59  
标签:语句 缓存 查询 查找 简述 引擎 执行

大体来说,MySQL 可以分为Server 层存储引擎层两部分。

  • Server 层包括连接器、查询缓存、分析器、优化器、执行器等
  • 存储引擎层负责数据的存储和提取。

 

一个查询语句执行,通常要经过6个步骤:

  1. 连接:首先,客户端与数据库服务端建立连接,这时会进行包括用户鉴权、创建线程、维持和管理连接等工作

  2. 查询缓存:MySQL 拿到一个查询请求后,会先到查询缓存中看看,如果缓存中存在,则直接返回,如果不存在,则继续后续查询流程。需要注意的是,这个缓存模块是默认关闭的,不推荐使用,因为只有sql语句完全一样才能匹配到,并且一旦缓存的数据有更新,缓存就会失效。8.0版本之后已经移除了这个模块。通常我们使用ORM框架中的缓存,或者Redis来达到使用缓存的效果。

  3. 语法解析和预处理:这一步主要做的事情是对 SQL语句进行词法和语法的分析以及语义的解析。检查sql语法是否符合规范,并通过预处理器检查表名、字段、别名等是否存在,是否有歧义,预处理之后得到一个新的解析树。

  4. 查询优化器:查询优化器会根据解析树生成不同的执行计划,然后选择一种最优的执行计划,进行后续的语句执行。

  5. 执行引擎:得到执行计划后,需要执行器(执行引擎)它利用存储引擎提供的相应的API来完成操作,最后把数据返回给客户端。 

 

 

查询语句在索引树上查找的过程,先是通过 B+ 树从树根开始,按层搜索到叶子节点,然后可以认为数据页内部通过二分法来定位记录。

  • 对于普通索引来说,查找到满足条件的第一个记录后,需要查找下一个记录,直到碰到第一个不满足条件的记录。

  • 对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。

 

标签:语句,缓存,查询,查找,简述,引擎,执行
From: https://www.cnblogs.com/dong320/p/16598023.html

相关文章

  • 简述一条更新语句的执行过程
    更新语句(增删改)的执行,基本流程和查询一致,也要经过连接器、分析器、优化器、执行器等功能模块,区别就在于拿到符合条件的数据之后的操作。执行器先通过存储引擎获取需要......
  • 16 Django-extra查询
    知识点补充:如何只拿出,dt字段中的年月字段?知识点补充:extra有些时候复杂的sql语句,Django无法去对应。extra(select=None,where=None,params=None,tables=None,ord......
  • sql语句查询
    xxxImpl.java 继承IDao<xxx>以qqUser为例publicclassqqDaoImplimplementsIDao<qqUser>{@Overridepublicintinsert(qqUserqqUser)throwsSQLExcep......
  • 复杂条件查询功能
    复杂条件查询功能分析       总记录数统计的代码实现UserDao接口:/***查询总记录数*@return*@paramcondition*/i......
  • SAP BW怎么查询传输请求号内容与所有请求号存放的表
    一:打开gui,输入事务码-SE11     在数据库表输入:E070(这个表就是存放所有传输请求号的)---点击显示  二:进入后点击下图红框处,查看表的数据 三:输入请求号,点......
  • 讲一讲加密数据如何进行模糊查询
    在上一篇讲一讲数据安全,如何有效预防脱库中我们提到了加密后的数据对模糊查询不是很友好,本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路。为了数据安全我们......
  • mysql/表sql语句补充/关键字查询
    操作表的SQL语句补充alter1.修改表名 altertable表名rename新表名;2.新增字段 altertableadd字段名字段类型(数字)约束条件3.新增指定字段排在第一位 ......
  • MySQL查询关键数据方法
    MySQL查询关键数据方法操作表的SQL语句补充1.修改表名 altertable表名reame新表名;2.新增字段名 altertable表名add字段名字段类型(数字)约束条件;#默认队尾......
  • 20220817 第一组 于芮 mysql数据库查询(第三十四天)
     小白成长记——第三十四天   今天主要学习了mysql数据库的查询语句,对于一个合格的程序猿来说,掌握数据库的查询语句是非常重要的,所以今天不仅学习了理论知识,还作了......
  • MySQL之表查询关键字
    操作表的SQL语句补充修改表名创建一张表:createtableaa(idintprimarykeyauto_increment);altertable表名rename新表名;altertableaarenameabb;新增字......