时间:2022-10-02来源:www.pcxitongcheng.com作者:电脑系统城
前文我们了解了MySQL采用客户端/服务器架构,用户通过客户端程序发送增删改查需求,服务器程序收到请求后处理,并且把处理结果返回给客户端。这篇文章主要看下MySQL服务端是如何处理客户端的请求,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。
客户端连接器:提供与MySQL服务器建立的支持。
主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。
负责MySQL中数据的存储与提取,与底层系统文件进行交互,可插拔,常见的两类:MyISAM和InnoDB。
负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,比如日志、配置文件等等。
客户端可以向服务器发送增删改查等各类请求,我们来看一下服务器是如何处理客户端发送的请求。
连接管理
客户端与服务器进程建立连接,每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互,当该客户端退出时会与服务器断开连接,服务器会把线程缓存起来。
如果两个查询请求在任何字符上的不同都会导致缓存不命中。请求中包含某些系统函数、用户自定义变量和函数、一些系统表也不会被缓存。
只要该表的结构或者数据被修改,则该表的所有高速缓存查询都将无效并删除。
PS:8.0中查询缓存已经删除了
如果查询缓存没有命中,就进入查询阶段,服务器先对文本做分析,判断语法是否正确,然后从文本中将要查询的表、各种查询条件都提取出来放到内部使用的一些数据结构上。
算是一个编译过程,涉及词法解析、语法分析、语义分析等阶段。
对SQL做优化,生成一个执行计划,表明了应该使用哪些索引进行查询,表之间的连接顺序是怎样的。
我们可以使用Explain来查看某个语句的执行计划。
完成查询优化之后还没有真正去访问真实的数据表,数据的存储和提取操作都封装到了这个模块里。不同存储引擎管理的表具体的存储结构可能不同,采用存取算法也可能不同。
MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。mysql执行查询的过程如下:
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30