一文搞懂MySQL运行机制原理

目录 前言 MySQL服务器体系架构 网络连接层 服务层 存储引擎层 系统文件层 服务器处理客户端请求 连接管理 解析与优化 查询缓存 语法解析 查询优化 存储引擎 小结 前言 前文我们了解

                        目录前言MySQL服务器体系架构网络连接层服务层存储引擎层系统文件层服务器处理客户端请求连接管理解析与优化查询缓存语法解析查询优化存储引擎小结

前言

前文我们了解了MySQL采用客户端/服务器架构,用户通过客户端程序发送增删改查需求,服务器程序收到请求后处理,并且把处理结果返回给客户端。这篇文章主要看下MySQL服务端是如何处理客户端的请求,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

MySQL服务器体系架构

MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。

网络连接层

客户端连接器:提供与MySQL服务器建立的支持。

服务层

主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。

1) 连接池:存储和管理客户端与数据库的连接。2) 系统管理和控制工具:集群、备份、安全管理。3) SQL接口:接受客户端发送的各种SQL命令并返回查询结果。4) 解析器:解析SQL,生成一颗解析树,验证SQL是否合法。5) 查询优化器:将解析树转化成执行计划,与存储引擎进行交互。6) 缓存:各种缓存,比如表、记录、权限等等,缓存有命中查询结果直接返回。

存储引擎层

负责MySQL中数据的存储与提取,与底层系统文件进行交互,可插拔,常见的两类:MyISAM和InnoDB。

系统文件层

负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,比如日志、配置文件等等。

服务器处理客户端请求

客户端可以向服务器发送增删改查等各类请求,我们来看一下服务器是如何处理客户端发送的请求。

连接管理

客户端与服务器进程建立连接,每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程来专门处理与这个客户端的交互,当该客户端退出时会与服务器断开连接,服务器会把线程缓存起来。

解析与优化