首页
学习
活动
专区
圈层
工具
发布

MySQL执行流程

理解mysql整个执行流程,对sql调优是有帮助的,我们先看一张流程图MySQL主要分为server层与引擎层server层:连接器,查询缓存,解析器,预处理器,优化器等,所有跨存储引擎的功能都在这一层实现...查询缓存建立连接后,MySQL会先查询缓存。Mysql会先校验这个sql是否执行过,以Key-Value的形式缓存在内存中,Key是查询语句,Value是结果集。...查询优化器查询优化器会将解析树转化成执行计划。一条查询可以有多种执行方法,最后都是返回相同结果。优化器的作用就是找到这其中最好的执行计划。...查询执行引擎在解析和优化阶段,MySQL将生成查询对应的执行计划,MySQL的查询执行引擎根据这个执行计划来完成整个查询。这里执行计划是一个数据结构,而不是和其他的关系型数据库那样生成对应的字节码。...返回结果给客户端 如果查询可以被缓存,那么MySQL在这个阶段页会将结果存放到查询缓存中。 MySQL将结果集返回给客户端是一个增量、逐步返回的过程。

85510

MySQL架构与执行流程

MySQL语句的执行流程   下图是一条查询sql语句的执行流程: ? 1.1 通信协议   我们的程序或者工具要操作数据库,第一步要做什么事情?当然是跟数据库建立连接。...当然,这个执行计划是不是一定是最优的执行计划呢?不一定,因为 MySQL 也有可 能覆盖不到所有的执行计划。我们怎么查看 MySQL 的执行计划呢?比如多张表关联查询,先查询哪张表?...MySQL体系结构总结:   基于上面分析的流程,我们一起来梳理一下 MySQL 的内部模块。 2.1 模块详解 ?...更新语句的执行流程:   讲完了查询流程,我们是不是再讲讲更新流程、插入流程和删除流程?更新流程和查询流程有什么不同呢?基本流程也是一致的,也就是说,它也要经过解析器、优化器的处理,最后交给执行器。...binlog 的另一个功能就是用来实现主从复制,它的原理就是从服务器读取主服务器的 binlog,然后执行一遍。   更新语句的整体流程图: ?

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql查询语句执行流程

    第二部:   查询缓存 mysql拿到请求后首先判断请求的查询语句是否有缓存,是否命中缓存,但是不推荐使用mysql的缓存,官方也不推荐,因为只要有一条数据更新表的缓存就会被删除,降低效率 第三步:   ...分析器 没有命中缓存的话就要开始执行语句了,首先对sql语句进行解析, 首先做 “词法解析”,分析出sql语句的关键词等字符串代表什么含义,然后通过”语法分析“判断这个sql是否满足语法标准。...第四步:   优化器 优化sql执行的速度,比如执行的索引、表连接(join)的执行顺序,然后决定出最快的执行方案 第五步:   执行器 判断用户对这个表是否有权限,有的话就会根据这个表的引擎执行通过优化器给出的最优执行方案去执行

    5.7K10

    【Mysql系列】(一)MySQL语句执行流程

    连接器连接流程 mysql -hip -Pport -uuser -p 是一个连接到 MySQL 服务器的命令,其中 ip 是要连接的 MySQL 服务器的主机名或 IP 地址,port 是 MySQL...执行 mysql 可执行文件后,会启动一个 MySQL 客户端程序。这个程序是用 C 或 C++编写的,负责与 MySQL 服务器进行通信。...MySQL 服务器接收到 SQL 语句后,会执行相应的操作,比如查询、插入、更新等。 MySQL 服务器执行完 SQL 语句后,会将结果返回给 MySQL 客户端程序。...MySQL 分析器通常提供以下功能: 查询执行计划分析:分析器可以解析和分析数据库查询的执行计划。执行计划描述了 MySQL 查询优化器将如何执行查询,包括使用哪些索引、连接方式、排序方式等。...执行器 什么是 MySQL 执行器 MySQL 执行器(MySQL Executor)是 MySQL 数据库的一个组件,负责执行查询语句并返回结果。

    1.4K30

    图解MySQL的语句执行流程

    MySQL的SQL语句执行流程详解MySQL作为一种广泛使用的开源关系型数据库管理系统,其SQL语句的执行流程对于理解数据库性能优化、错误排查以及数据库设计都至关重要。...MySQL体系结构在探讨SQL语句执行流程之前,我们先简要了解一下MySQL的体系结构。MySQL的体系结构大致可以分为三个层次:连接层、服务器层和存储引擎层。...,提高查询效率(MySQL8.0后已删除)存储引擎层InnoDB、MyISAM、Memory等负责数据的存储、提取和事务处理等,支持插件式存储引擎层次间协作流程连接层与服务器层协作连接建立与验证:当客户端尝试连接到...SQL语句执行流程MySQL流程解析:客户端请求:客户端(如应用程序、用户终端等)向MySQL服务器发送请求查询数据的请求。...MySQL缓存检查:MySQL服务器首先检查其缓存中是否存在客户端请求的数据。如果缓存中有数据,则直接返回缓存数据给客户端,无需进行后续的解析和执行操作,这可以显著提高查询性能。

    70910

    MySQL架构与SQL执行流程

    MySQL架构设计 下面是一张MySQL的架构图: ?...负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。...SQL语句执行流程 连接 客户端发来一条SQL语句,监听客户端的‘连接管理模块’接收请求 将请求转发到‘连接进/线程模块’ 调用‘用户模块’来进行授权检查 通过检查后,‘连接进/线程模块’从‘线程连接池...‘命令解析器’,经过词法分析,语法分析后生成解析树 接下来是预处理阶段,处理解析器无法解决的语义,检查权限等,生成新的解析树 再转交给对应的模块处理 如果是查询还会经由‘查询优化器’做大量的优化,生成执行计划...有则直接对应的表和获取锁,否则重新打开表文件 根据表的meta数据,获取表的存储引擎类型等信息,通过接口调用对应的存储引擎处理 上述过程中产生数据变化的时候,若打开日志功能,则会记录到相应二进制日志文件中 结果 SQL执行完成后

    2.1K30

    select语句的执行流程(MySql)

    学习了极客时间MySql课程,做个总结 以一条select语句为例:select * from T where ID=4 ,梳理下执行的流程 一条sql语句在执行过程中需要经过连接器、分析器、优化器、...查询缓存 在经过连接器之后,会执行第二步查询缓存,在MySql拿到查询后,会先到查询缓存查看是否执行过这条语句,之前执行的结果会以key-value对的形式存在,如果不在查询缓存中,会继续执行后面的极端...在MySql8.0之后去掉了查询缓存的功能。...分析器 分析器会先做“词法分析”,识别出sql里的字符串分别是什么,读出“select”关键字对出这是一条查询语句,把字符串T识别成“表T” “语法分析”,根据词法分析的结果,判断该条sql是否满足MySql...的语法 优化器 优化器的作用在于选择最优的逻辑执行sql,例如在一个语句进行多表关联的时候,决定各个表的连接顺序 执行器 在开始执行前,先判断你对表T是否有执行查询的权限,没有就返回没有权限的错误,有权限则继续执行

    1K10

    Sql语句在Mysql中的执行流程

    查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。    ...优化器: 按照 MySQL 认为最优的方案去执行。   执行器: 执行语句,然后从存储引擎返回数据。   ...连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。...完成这 2 步之后,MySQL 就准备开始执行了,但是如何执行,怎么执行是最好的结果呢?这个时候就需要优化器上场了。         ...5) 执行器             当选择了执行方案后,MySQL 就准备开始执行了,首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果

    7.8K10

    MySQL基础架构之查询语句执行流程

    这篇笔记主要记录MySQL的基础架构,一条查询语句是如何执行的。...比如,在我们从student表中查询一个id=2的信息 select * from student where id=2; 在解释这条语句执行流程之前,我们看看MySQL的基础架构。...执行语句的时候,mysql首先是去查询缓存,之前有没有执行过这样的语句,mysql会将之前执行过的语句和结果以key-value的形式存储起来(当然有一定的存储和实效时间)。...缓存的工作流程是 服务器接收SQL,以SQL和一些其他条件为key查找缓存表 如果找到了缓存,则直接返回缓存 如果没有找到缓存,则执行SQL查询,包括原来的SQL解析,优化等。...总结 MySQL得到sql语句后,大概流程如下: 0.连接器负责和客户端进行通信 1.查询缓存:首先查询缓存看是否存在k-v缓存 2.解析器:负责解析和转发sql 3.预处理器:对解析后的sql树进行验证

    1.6K10

    【黄啊码】MySQL入门—1、SQL 的执行流程

    我们再来看另外一张图,以下是SQL语句的执行流程:图片简而言之就是一句话:SQL 语句→缓存查询→解析器→优化器→执行器。...mysql8.0之后,官方已经直接抛弃了。...优化器:选择最优的执行方案,从而提高执行效率,比如索引之类的。执行器:字面意思就是执行我们所写的sql语句,当然前提是你当前用户具备了执行的权限。...而在存储引擎方面,MySQL则有自己独到的存储引擎,常见的、常用的有InnoDB和MyISAM,下面我具体列举一下:InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认的存储引擎,最大的特点是支持事务...MyISAM 存储引擎:在 MySQL 5.5 版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少。

    72620

    SpringMVC执行流程

    SpringMVC常用组件 DispatcherServlet:前端控制器,不需要工程师开发,由框架提供 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求 HandlerMapping...initRequestToViewNameTranslator(context); initViewResolvers(context); initFlashMapManager(context); } SpringMVC的执行流程...如果有配置,则访问目标资源(一般为静态资源,如:JS,CSS,HTML),找不到客户端也会展示404错误  b) 存在则执行下面的流程 3) 根据该URI,调用HandlerMapping获得该Handler...5) 如果成功获得HandlerAdapter,此时将开始执行拦截器的preHandler(...)方法【正向】 6) 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller...8) 此时将开始执行拦截器的postHandle(...)方法【逆向】。

    67930

    Task执行流程

    TaskSchedulerImpl的resourceOffers()方法,得到了TaskDescription序列的序列Seq[Seq[TaskDescription]],即对某个task需要在某个executor上执行的描述...,仅仅是逻辑上的,还并未真正到executor上执行,本文将从源码角度解析Task是怎么被分配到executor上执行的。...threadPool.execute(tr) } 创建了一个TaskRunner(继承于 Runnable)并加入到线程池中执行,重点就是TaskRunner中的run方法了,代码太长保留只要逻辑代码..._executorDeserializeTime = System.currentTimeMillis() - deserializeStartTime //对rdd的指定分区的迭代器执行...func(context, rdd.iterator(partition, context)) } 使用广播变量反序列化得到rdd和func,数据来源于taskBinary 对rdd的指定分区的迭代器执行

    1.3K11

    AOP执行流程

    AOP的执行过程 之前跟大家聊IOC的时候跟大家聊过它的启动过程,同样的AOP也有指定的执行流程,但是需要IOC作为基础。...容器运行中的一些对象比如BeanFactoryProcesser、methodInterceptore等还有其他的很多对象) 从创建好的容器中获取需要对象 调用具体的方法开始调用 说了这么多理论知识,要想知道里面的具体执行流程...至此SpringAOP的通知连式结构调用流程就开始了,重复开始循环调用。一直到List chain整个链全部执行完毕 当前这里面还有一些其他的逻辑需我就没有具体细说了 比如整个链有没有一种顺序执行?...总结 为了加强理解,还是有两个比较常见的面试题 advice的通知执行流程? 看完整个流程如果还是不理解我觉得可以自己debug走一遍加深自己的理解,文中我也做了总结。...这个问题如果理解advice的调用流程那么也就能很简单的回答了。 参考

    60920
    领券