MySQL篇|02一条SQL执行的历程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 当打开某一个数据库客户端,连接数据库,输入一条SQL语句,点击执行后输出其结果。执行的过程中,发生了什么?

当打开某一个数据库客户端,连接数据库,输入一条SQL语句,点击执行后输出其结果。执行的过程中,发生了什么?

客户端与 MySQL 的交互过程的原理图,如下图所示。

CgotOV14ySKAMxohAAH2VHcAzkE612.png

查询语句的轨迹

一条查询语句的轨迹是怎么样的?

select id from bas_student;
  • 客户端通过MySQL的Client Connection建立连接
  • 查询缓存。前提是开启查询缓存功能。开启了,在查询缓存过程中查询到完全相同的SQL语句时将查询结果直接返回给客户端,未开启或未查到数据则进入下一步
  • 前提是未开启查询缓存或开启了却没查到数据,进入解析器进行语法语义解析,生成解析树
  • 预处理器生成新的解析树
  • 查询优化器生成执行计划,其实就是选择最优的查询路径
  • 查询执行引擎执行SQL语句,通过执行器组件去执行,其根据执行计划,调用存储引擎的各种接口去执行SQL语句,查询到数据后不仅把结果返回给客户端,也将结果保存到查询缓存中

更新语句的轨迹

一条更新语句的轨迹时怎么样?

update bas_student set name = 'jasen' where id= 2021;

和查询语句的执行轨迹基本一致,但更新语句会涉及两个重要的日志模:redo log 重做日志 和 bin log 归档日志。

  • redo log prepare

    • 存储引擎将新记录更新到内存中,并将这个操作记录到redo log中,此时redo log 处于prepare状态,随时可以提交事务。
  • bin log

    • 执行器生成操作的bin log 并将bin log写入磁盘
  • redo log commit

    • 执行期调用引擎提交事务的接口,将redo log 状态改为commit

扩展

查询缓存功能很薄弱,MySQL8.0已废弃查询缓存功能

如果开启查询缓存,SQL语句必须完全都一摸一样,才能查到该结果,对于更新语句一摸一样的数据会比较少,且对于表中的数据如果更新了,该表的缓存也会失效。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
6天前
|
SQL 存储 关系型数据库
【MySQL】SQL 优化
【MySQL】SQL 优化
23 0
|
2天前
|
SQL 关系型数据库 MySQL
查询mysql版本sql - 蓝易云
执行这个命令后,MySQL将返回当前正在运行的版本信息。
31 0
|
4天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从MySQL到Flink 1.16.2 Flink-SQL的数据同步工作出现了一个异常如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
19 0
|
4天前
|
SQL 存储 数据处理
实时计算 Flink版产品使用合集之flink-connector-mysql-cdc 和 flink-sql-connector-mysql-cdc有什么区别
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
15 1
|
6天前
|
SQL 关系型数据库 MySQL
【MySQL系列笔记】常用SQL
常用SQL分为三种类型,分别为DDL,DML和DQL;这三种类型的SQL语句分别用于管理数据库结构、操作数据、以及查询数据,是数据库操作中最常用的语句类型。 在后面学习的多表联查中,SQL是分析业务后业务后能否实现的基础,以及后面如何书写动态SQL,以及完成级联查询的关键。
211 6
|
6天前
|
SQL 关系型数据库 MySQL
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
|
5月前
|
SQL 存储 关系型数据库
MySQL下使用SQL命令进行表结构与数据复制实践
MySQL下使用SQL命令进行表结构与数据复制实践
68 0
|
10月前
|
SQL 关系型数据库 MySQL
MySQl数据库第八课-------SQL命令查询-------主要命脉2
MySQl数据库第八课-------SQL命令查询-------主要命脉
|
10月前
|
SQL 关系型数据库 MySQL
MySQl数据库第八课-------SQL命令查询-------主要命脉 1
MySQl数据库第八课-------SQL命令查询-------主要命脉