首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

select语句执行流程MySql

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

7310

MySQL架构与执行流程

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

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

Mysql查询语句执行流程

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

4.2K10

MySQL Update执行流程解读

一、update跟踪执行配置 使用内部程序堆栈跟踪工具path_viewer,跟踪mysql update 一行数据执行过程,配置执行脚本:call_update.sh DROP DATABASE...THREADS.inf 362689_5.txt 362690.dat 362691.inf 362699_5.txt 362706.dat 362717.inf FUNC_DEF 查看SQL执行函数调用过程...(THD*) --更新语句实际执行引用消解 Sql_cmd_update::execute_inner(THD*) --SQL引擎层,调用存储引擎接口执行 Sql_cmd_update::update_single_table...pool 中table row trans_commit_stmt(THD*, bool) innoDB关键更新执行过程 ha_innobase::update_row: row_get_prebuilt_update_vector...三、执行总结 update执行流程 1.执行语句连接数据库 2.分析器通过词法、语法分析知道这是一条更新语句 3.优化器确定执行路径 4.执行器具体执行,找到这一行,更新数据,然后通过Inodb存储具体更新操作

2K20

MySQL 8.0 SQL 执行流程

MySQL 8.0 SQL 执行流程首先我们先来看下 MySQL 经典架构图,8.0 没怎么翻到,先看看这个了。...图上有这么几个模块:Collectos连接器,客户端可以通过这些方式对 MySQL 服务端发起通信。Services & utilities?...执行器先会判断当前是否具有权限,然后才会去执行相应 SQL 语句。Caches缓存命中,8.0 中已经被干掉了。...比如他是将 SQL 语句作为 key 进行命中匹配,如果 SQL 中多加了一个空格也会被认为不是同一条 SQL 导致匹配不到。Pluggable storage Engines数据库执行引擎插件。...文件系统这个是存放 MySQL 文件系统。SQL 执行流程SQL 流程是 SQL --> 解析器 --> 优化器 --> 执行器 --> 返回结果。下面会将各个组件单独拉出来做分析。

13040

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

MySQL 连接器(MySQL Connector)是用于连接和与 MySQL 数据库进行交互驱动程序。它提供了与 MySQL 数据库服务器通信功能,包括建立连接、执行查询、更新数据等。...连接器连接流程 mysql -hip -Pport -uuser -p 是一个连接到 MySQL 服务器命令,其中 ip 是要连接 MySQL 服务器主机名或 IP 地址,port 是 MySQL...执行 mysql执行文件后,会启动一个 MySQL 客户端程序。这个程序是用 C 或 C++编写,负责与 MySQL 服务器进行通信。...MySQL 优化器是一个智能查询执行计划生成器,它会根据查询语句和表信息,通过优化算法来选择最佳查询执行策略。...执行器 什么是 MySQL 执行MySQL 执行器(MySQL Executor)是 MySQL 数据库一个组件,负责执行查询语句并返回结果。

30830

MySQL架构与SQL执行流程

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

1.6K30

Sql语句在Mysql执行流程

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

4.6K10

MySQL体系结构与SQL执行流程

如果你只了解到sql是如何优化,那么你应该通过本文了解一下Mysql体系结构以及sql语句执行流程。...接下来,通过一条sql语句执行来深入了解MySQL各个组件功能以及其作用。...SQL语句执行流程 1、连接MySQL 通常我们会编写sql语句通过某个客户端来执行并且接受执行结果,比如命令行、JDBC、navicat。...总结 至此,一条查询语句执行流程已经非常清晰了,同时也认识了MySQL整个体系结构以及各组件作用。最后用一张图来收尾本文核心内容并做总结。...一条查询SQL语句执行流程: 客户端通过连接器连接MySQL服务。 连接成功后向SQL接口发送SQL语句请求。 SQL接口接收到SQL查询语句会先去缓存查询,如果命中返回给客户端,否则交给解析器。

48584

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.1K10

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

我是黄啊码,鉴于大家对于学习热情,从今天起,将连载mysql相关知识,需要学习可以注意我更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜!...我们再来看另外一张图,以下是SQL语句执行流程:图片简而言之就是一句话:SQL 语句→缓存查询→解析器→优化器→执行器。...解析器:相当于咱们英语中翻译,具体有:语法分析、语义分析,毕竟我们写东西机器是不懂,得它们自己翻译成自己懂东西。优化器:选择最优执行方案,从而提高执行效率,比如索引之类。...执行器:字面意思就是执行我们所写sql语句,当然前提是你当前用户具备了执行权限。...而在存储引擎方面,MySQL则有自己独到存储引擎,常见、常用有InnoDB和MyISAM,下面我具体列举一下:InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认存储引擎,最大特点是支持事务

49320

SpringMVC执行流程

前言   SpringMVC搭建Spring框架进行项目开发,在之前是相对比较流行一个组合,在使用过程中,对于SpringMVC一个流程,许多使用者可能都比较模糊,本文就对SpringMVC执行流程做一个简单介绍...SpringMVC执行流程   1、前端控制器(DispatchServlet)接收到客户端发送请求   2、收到请求后它会转发给处理器映射器(HandlerMapping),请求获取Handler。...4、前端控制器请求返回处理器对象转发给处理器适配器(HandlerAdapter)   5、处理器适配器通过适配处理调用具体处理器(Handler)既执行实际后端逻辑处理代码,生成结果。   ...6、处理器适配器将Handler执行结果ModelAndView返回给前端控制器   7、前端控制器将返回ModelAndView转发给ViewResolver解析成View,并将View对象返回给前端控制器...写在最后   本篇文章就SpringMVC执行流程以及SpringMVC和Spring之间关系进行了一个简单介绍,后续文章会深入介绍其中细节。

34110

update执行流程(MySQL redo log和binlog详解)

,但是update语句相比select语句还是有很大不同,更新流程设计两个重要日志模块: redo log:重做日志 binlog:归档日志 redo log 什么是redo log?...之间位置就是可以追加记录空闲空间 假设擦除慢(checkpoint移动慢),写入快(write pos移动快),如果write pos追上了checkpoint,此时数据库将不能执行更新,...redo log buffer就是用来存储redo日志。 真正将日志写入到redo log文件(ib_logfile+数字)是在执行commit语句时候执行。...MySQL最初自带引擎是MyISAM,MyISAM只适合归档,不具备crash-safe能力 InndoDB是后来另一个公司以插件形式引入到MySQL,为了解决binlog无crash-safe...UPDATE语句执行流程 update test set score = 3 where id = 2; 整个update语句中牵涉到写redo log和binlog,并且redo log在前,binlog

1.6K10

分析MySQL执行流程(连接、缓存、分析、优化、执行、Undo Log、Binlog、Redo Log)

key 是查询语句,value 是查询结果。 MySQL 收到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。...一条更新SQL执行流程 更新SQL执行流程,在Server层和查询SQL差不多,也会经过连接、查询缓存、分析、优化、执行过程。...假设t_user表存储引擎为InnoDB,一条更新SQL执行过程如下: 【执行事务阶段】 1、客户端向MySQL发送执行 update t_user set name='小王' where id=1...6、执行器查询到记录后,把name值改为“小王”,调InnoDB接口把新值写入Buffer Pool中data page,这里注意下,MySQL执行增删改查,都是直接操作 Buffer Pool,...转载请注明出处——胡玉洋 《根据一条Sql来分析MySQL执行流程(连接、分析、优化、执行、Undo Log、Binlog、Redo Log)》

1K30

MyBatis执行流程分析

核心流程介绍 我们都知道 MyBatis 是对 JDBC 封装,不管怎样,JDBC 那一套还是不会变,只是做了抽象、封装、归类等;所以我们顺着 JDBC 思路来说下MyBatis执行流程,JDBC...执行六部走 注册驱动 获取Connection连接 执行预编译 执行SQL 封装结果集 释放资源 然后通过这张图来分析下MyBatis是怎样来封装这个过程: MyBatis执行八步走 上面中流程就是...MyBatis 内部核心流程,咱么来一步步解释下 读取 MyBatis 核心配置文件。...这样一对比,就可以看出了其实 Mybatis 执行流程和 JDBC 其实大同小异 如果用代码表示如下∶ // 1.加载配置文件 InputStream inputStream= Resources.getResourceAsStream...List users = mapper.selectUserList(); 小结 这节主要通过对 JDBC 执行步骤分析来对比分析 MyBatis 执行流程,总体上来看它们执行步骤基本是一样

11610

SpringCloud - Hystrix执行流程

执行Command就可以发起一次对依赖服务调用 要执行Command,需要在4个方法中选择其中一个 前两种是HystrixCommand独有的哦 2.1 execute() /**...* 不会抛出异常,而只是切换为同步执行,因此无需更改代码即可 将command从运行在单独线程切换到调用线程....) * * @return {@code Future }执行 #run() 结果,或者如果command由于任何原因失败,则返回 #getFallback() 结果....command,而是直接执行fallback降级 5 检查线程池/队列/semaphore是否已满 如果command对应线程池/队列/semaphore已满,那么也不会执行command,而是直接去调用...TimeoutException 如果timeout了,也会去执行fallback降级机制,而且就不会管run()或construct()返回值 我们是不可能终止掉一个调用严重延迟依赖服务线程

35210

springMVC执行流程

先看一张流程图,实线部分为spring框架完成,虚线部分(即contronller调用业务层部分)才是我们需要动手完成 ? ?...简要分析执行流程: 1.DispatcherServlet表示前置控制器,是整个SpringMVC控制中心。...表示处理器适配器,其按照特定规则去执行Handler 6.Handler让具体Controller执行 7.Controller将具体执行信息返回给HandlerAdapter,如ModelAndView...10.视图解析器将解析逻辑视图名传给DispatcherServlet 11.DispatcherServlet根据视图解析器解析视图结果,调用具体视图 12.最终视图呈现给用户。...springmvc中最核心组件: (一)DispatcherServlet DispatcherServlet就是所谓SpringMVC前端控制器,作为整个SpringMVC控制中心,,其相关UML

49630
领券