MySQL服务器是如何处理客户端请求?

本文详细阐述了MySQL服务器处理客户端请求的过程,包括连接层的身份认证、权限获取,服务层的查询缓存、语法解析、查询优化,以及存储引擎的工作原理。通过分析,揭示了MySQL的执行流程和常见面试题的相关解答。
摘要由CSDN通过智能技术生成

MySQL服务器是如何处理客户端请求的?

当我们在学习MySQL时,通常是由客户端发起请求,向服务端查询数据并返回,但内部发生了什么其实我们并不知晓,今天我们就来剖析其内部结构。

一、MySQL执行流程是怎样的?

在这里插入图片描述

从图中我们可以看出,服务器在处理来自客户端的查询请求大致需要经过三个部分,分别是连接管理解析与优化存储引擎 ,也就是我们常说的连接层服务层引擎层,接下来我们来详细每一层结构的具体内容。

1、连接层

客户端在向 MySQL 服务器发送一条查询请求前,首先要确保MySQL服务器已经正常启动,并且客户端需要与MySQL服务器已经建立 TCP 连接。 在客户端程序发起连接请求时,要携带主机地址、用户名、密码、端口号等信息,服务器程序会对客户端程序提供的这些信息做身份认证、权限获取。

在这里插入图片描述

  • 用户名或密码不对,会收到一个Access denied for user错误,客户端程序结束执行
  • 用户名密码认证通过,会从权限表查出账号拥有的权限与连接关联,之后的权限判断逻辑,都将依赖于此时读到的权限。所以,如果一个用户已经建立了连接,即使管理员中途修改了该用户的权限,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。

每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互,当该客户端退出和服务器断开连接时,服务器并不会立即把与该客户端交互的线程销毁掉,而是把它缓存起来,在另一个新的客户端再进行连接时,把

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值