【MySQL性能优化】- MySQL结构与SQL执行过程

本文详细解释了MySQL的SQL执行流程,包括连接器的作用、查询缓存的工作原理、分析器的词法和语法分析,以及优化器和执行器的选择与执行。重点介绍了SQL的解析、优化和执行细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL结构与SQL执行过程

😄生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆 博客首页   @怒放吧德德  To记录领地
🌝分享学习心得,欢迎指正,大家一起学习成长!

在这里插入图片描述

前言

上阶段初步学习了索引与优化,以及对Explain的使用,接着来就来初识一下SQL执行的时候底层是如何执行的,这样有助于我们对SQL的理解,才能够更好的对SQL进行优化。

SQL执行结构

首先,我们需要了解一下SQL执行的结构,我们通过一张图来简单的认识一下。
未命名文件 (29).png
MySQL的架构可以大致分为两层:服务层和存储引擎层。

  • 服务层:也被称为服务器层,主要包括连接处理、授权认证、事务管理、锁管理等服务器的一般性服务以及大部分的标准SQL功能实现。更具体的说,连接管理、缓冲查询、解析查询、优化查询以及执行查询等功能都在这一层实现。也就是在服务层进行SQL语句的解析、优化、缓存以及部分内置函数的实现,以及触发器、存储过程等。
  • 存储引擎层:也被称为引擎层,负责数据的存储和提取,其架构模式使MySQL具有插件式的存储引擎架构,这是MySQL为数不多的跨平台数据库,支持多种存储引擎的数据库。这一层为上一层提供API接口,一些基础的功能如行级锁、事务等都通过各自的存储引擎来实现。

连接器

我们知道,MySQL其实也就是个服务器,是需要我们通过客户端(JDBC、Navicat等)去连接操作。而连接器就是负责管理客户端与服务器之间的连接。
:::info
当客户端向MySQL发起连接请求时,连接器就会进行身份校验,通过输入的账号密码来校验是否正确。如果认证成功,连接器还会在内部检查用户的权限等信息。
连接器还负责管理连接的生命周期,例如在没有活动的情况下,长时间未使用的连接可能会被自动断开(MySQL默认是8小时)。同时,连接器也负责复用已经建立好的连接,这样可以避免频繁进行连接和断开连接带来的开销。
:::
这里我们来介绍一下相关操作
未命名文件 (30).png
首先,通过用户、密码连接MySQL服务器,连接器会根据mysql数据库下的user表去进行用户校验和权限校验,还会根据host校验用户的host是否可以连接。此时连接器会开辟一个连接会话,里面会存储用户信息以及权限信息等,连接器会负责管理连接的生命周期,在没有活动的情况下,长时间未使用的连接可能会被自动断开。同时,连接器也负责复用已经建立好的连接,这样可以避免频繁进行连接和断开连接带来的开销。而默认存活时间是8小时。

如果使用root用户去修改了刚刚建立连接成功的用户的权限,那么是不会影响到已经存在的连接权限的。只有在新的连接才会刷新权限。

我们可以通过show processlist查看此时对数据库的连接情况。其中command列显示位Sleep就表示空闲连接。

mysql> show processlist;
+----+-----------------+-----------------+------------+---------+-------+------------------------+------------------+
| Id | User            | Host            | db         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个有梦有戏的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值