MYSQL —— 一条SQL在MySQL中是如何执行

MYSQL--一条SQL执行的流程,分析MYSQL的架构 MYSQL--一条SQL执行的流程,分析MYSQL的架构,借鉴小林coding文章 阅读详情

文章目录

 

1、MySQL的内部组件结构(部分参考极客时间)

在这里插入图片描述

总体来说:MySQL 可以分为 Server 层和存储引擎层两部分。

1.1、Server层

主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

1.2、Store层

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。也就是说如果我们在create table时不指定表的存储引擎类型,默认会给你设置存储引擎为InnoDB。

1.3、演示的DDL:

CREATE TABLE `test` (
2  `id` int(11) NOT NULL AUTO_IN
01-一条SQLMySQL中是如何执行 开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如下所示 (在工程实现上,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证。主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。 阅读详情

相关推荐

MySQL Sever - 一条SQL语句的执行流程

MySQL Server - 一条SQL语句的执行流程

今天不coding的博客 1276

SQLSever与mysql兼容

SQLServer与mysql兼容 问题提出 在项目过程中,客户提出要使用SQL Server数据库,而我们之前采用的是mysql数据库。现在问题来了,之前做的用的是mysql,我们想做一个产品,又想满足特定客户的需求,因此要求一个系统既支持mysql数据库,又支持SQLSever数据库的。 我们的架构是Spring + mybatis。 原则上编程的过程中,尽量少使用数据库的方言,尽量采

自留地 4323

详解一条sql语句在mysql中是如何执行

主要介绍了一条sql语句在mysql中是如何执行的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MySql的数据如何导入到Sql Server数据库中?

本文咱讨论的重点是如何将MySql数据导入到Sql Server数据库中,所以就需要机器上同时安装了MySqlSql Server两种数据库。 当我们拿到MySql数据文件时,首先在MySql数据库下建立一个新的数据库,随便取名为"dapingtai",将sql文件拖入查询窗口会直接打开该文件,然后执行就会得到sql文件中的想要的表接口和数据,但是当sql文件比较大

jac.song的专栏 3万+

Linux下的Mysql,导入执行sql文件命令

mysql -u root -p dbname < filename sql执行上述命令,会提示你输入root账户的密码,密码验证成功后会在dbname这个数据库执行filena mysql -u root -p dbname sql文件所在的路径。例如:mysql -u root -p dbname --------------------------------------

u010401880的专栏 2555

一条sql查询语句在mysql中的执行过程是什么

MYSOL连接器、MYSOL查询缓存、MYSOL分析器、MYSOL优化器、MYSQL执行sql语句执行过程

qq_39350797的博客 328

MySQL--执行mysql脚本及其脚本编写

首要步骤(一般可省略):开启mysql服务(默认是开机时就自动运行了):控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的服务状态是启动还是停止,把它设为启动连接mysql:在命令行下输入 mysql -h localhost -u root -p回车,然后输入密码即可;或直接运行mysql自带的连接工具,然后输入密码即可.1.编写sql脚本,假设内容如下:

8776

详解Mysql一条sql语句的执行过程

详解MYSQLSQL语句执行过程

m0_66220639的博客 1830

MySQL一条SQL语句的执行过程

MySQL一条SQL语句的执行过程涉及多个组件,包括连接器、查询缓存、解析器、预处理器、优化器、执行器和存储引擎。理解这些组件的工作原理,对于性能优化、故障排查和安全加固至关重要。通过本文的讲解,希望你能够更深入地理解MySQL的内部机制,并在实际工作中应用这些知识,提升数据库操作的效率和安全性。如果你有任何问题或需要进一步的帮助,请在评论区留言,我会尽力为你解答。

xycxycooo的博客 880

MySQL:一条 SQL执行过程详解

到此,关于Buffer Pool、Redo Log Buffer 和undo log、redo log、bin log 概念以及关系就基本差不多了。我们再回顾下Buffer Pool 是 MySQL 的一个非常重要的组件,因为针对数据库的增删改操作都是在 Buffer Pool 中完成的Undo log 记录的是数据操作前的样子redo log 记录的是数据被操作后的样子(redo log 是 Innodb 存储引擎特有)

m0_61088872的博客 1238

Mysql一条sql语句的执行过程是怎样的?

MySQL执行SQL语句过程分为连接层、SQL处理层和存储引擎层:1)连接层验证权限建立通信;2)SQL处理层通过解析器、优化器生成执行计划;3)存储引擎层(如InnoDB)通过缓冲池和索引访问数据。关键优化点包括合理使用索引、控制事务大小和配置内存参数。全流程涉及语法解析、成本优化、数据读写等环节,性能瓶颈常出现在全表扫描、锁竞争和缓冲池不足等情况。

学习Java技术栈 1030

MySQL一条 SQL执行流程详解

本文详细解析了MySQLSQL语句的执行流程,从客户端连接到最终结果返回。主要分为六个阶段:1)连接建立与权限验证;2)SQL解析(词法/语法分析生成解析树);3)预处理(语义检查、权限验证);4)查询优化(生成成本最低的执行计划);5)执行器调用存储引擎获取数据;6)结果返回客户端。不同SQL类型(SELECT/INSERT/UPDATE/DELETE)存在处理差异。理解这一流程对性能优化、索引设计、事务控制和故障排查至关重要,能帮助开发者深入理解数据库工作原理,写出更高效的SQL语句。

慢慢 1587

MySQL一条SQL执行流程

前言 作为一名初级 DBA,浅谈一下自己对 MySQLSQL 执行流程的学习,转载请加入原文链接。                                                        疑问请联系 alexyusheng@163.com 文章目录前言前言一、MySQL的体系结构1.连接层2.SQL层(重点)3.存储引擎层二、一条SQl执行流程1.SQL执行流程 --- UPDATE总结 前言 首先想要知道一条SQL执行流程,那么我们要先

qq_42315096的博客 612

MySQL一条查询SQL语句的完整执行流程

本文介绍了MySQL一条SQL执行流程,包括连接数据库、分析SQL语句、优化SQL语句、执行SQL语句等等内容。

随机的未知——用已知去面对未知 5940

mysql】理解一条sql执行流程

缓存主要的作用是提高查询语句的性能,当传来一条查询的sql时,Mysql会先去缓存中查询是否存在该sql对应的执行结果(通过key-value形式缓存的),如果存在,则直接返回sql对应的执行结果;分析器处理通过后的sql语句将会交给优化器进行优化,优化器会根据前面生成的解析树生成一系列执行计划,然后根据执行计划匹配最佳索引来找到一条性能最好的执行计划,然后将该执行计划的SQL交给执行器处理。③ 执行最优的执行计划:根据优化器生成的执行计划,执行器会按照计划逐步执行SQL语句并生成结果集。

weixin_44823875的博客 2255

一、mysql一条SQL查询语句是如何执行

负责数据的存储和提取。但如果长连接累积下来,可能导致内存占用太大(因为MySQL执行过程中临时使用的内存是管理在连接对象里面的),被系统强行杀掉。对于查询频繁,修改少的静态表可以采取查询缓存的方式,例如系统配置表。如果你的语句不对,就会收到“You have an error in your SQL syntax”的错误提醒,比如下面这个语句select少打了开头的字母“s”。第一次调用的是“取满足条件的第一行”这个接口,之后循环取“满足条件的下一行”这个接口,这些接口都是引擎中已经定义好的。

wokoone的博客 1148

MySQL是如何执行一条SQL语句的?

应用程序通过 MySQL 协议(如 JDBC、ODBC)连接到 MySQL 服务器。语句且缓存命中,直接返回结果(MySQL 8.0 移除此功能,因缓存失效开销大)。:物理日志,确保崩溃恢复(Write-Ahead Logging, WAL)。:服务器验证用户名、密码,并检查用户是否有执行SQL 的权限。:将结果集返回客户端(或写入磁盘/内存缓存)。:验证表名、列名是否存在,数据类型是否匹配。:是否使用索引(全表扫描 vs 索引扫描)。:逻辑日志,用于主从复制(可选)。

Hi,我是 JackYang,一名热爱编码的程序员。这个博客主要记录我的开发笔记、技术心得以及在项目实践中的经验总结。 392

Mysql 命令行与Navicat15 分别执行.sql文件

关注微信公共号:小程在线方法一:source 文件路径+文件名进入MySQL:C:\Users\cheng>mysql -u root -p Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2020

程志伟的博客 996
上一篇: 一篇与面试官和蔼交流的深入了解JUC并发编程+集合
下一篇: MySQL—— MySQL的执行计划详解(Explain)
爱玛士
博客等级 码龄6年 719粉丝 253原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值