Mysql架构

接下来的一些文章会有关于在我看完《高性能Mysql》后的一些个人的偏见,如果有问题可以在评论区进行探讨,及时指出,我会看到并进行回复。我会去查我不太明白的一些知识并进行相应的解释,来让这些文章不那么的机械化,希望能更生动一些,帮助我和大家一起解决一些问题。(我也是小白)

逻辑架构

第一层主要是服务于客户端,去进行连接处理,身份验证,确保安全性这样子的一些操作。

第二层是主要的一些核心功能,包括查询解析,分析,优化,以及一些内置的函数(日期,时间,数学,加密函数),还有一些跨存储引擎(指同一数据库中可以同时使用不同的存储引擎) 的功能,像存储过程(开发者手动创建、持久化的 SQL 逻辑集合从而减少客户端与数据库的交互次数,用于提高Mysql的性能,使用时直接调用这个存储过程即可,并且是有名称,支持传入参数并且是永久存储在数据库中,重启后依然存在的),触发器(就是在一张表执行了某些操作后,由于事先编写了触发器,另一张表中的某些数据也会进行相应的改动,大概是这个意思),视图(封装了一些sql操作,不需要每次调用这一堆逻辑都去重写这一堆逻辑而是去调用视图,可以提高数据的安全性比如说减少暴露一些字段,也能够解偶业务和底层表结构)这些。

第三层是存储引擎层,就是负责数据的存储和提取。服务器是用过存储引擎的API进行通信的,API还屏蔽了不同存储引擎之间的差异,页包含了几十个底层函数,比如"开始一个事务"或者其它的一些操作。

连接管理与安全性

默认情况下,每个客户端连接都会在服务器进程中拥有一个县城,该连接的查询只会在这个单独的线程中执行,该线程会驻留在一个 内核或CPU中。服务器会维护一个缓冲区,存放就绪的线程,所以能够去减少频繁的创建和销毁线程带来的开销,这好像就是数据库连接池吧。

在客户端连接到Mysql服务器的时候,服务器也会对其进行身份验证,基于用户名,主机名和密码。

优化与执行

Mysql的解析查询会以创建内部数据结构(解析树),在此基础上去进行各种优化,比如说重写查询,决定表的读取顺序,选择合适的索引。用户可以通过特殊关键字向优化器传递提示,从而影响优化器的决策过程。也可以请求服务器解释优化的各个方面,能够让我们知道服务器是如何进行优化决策的。

优化器不关心表底层使用的是什么存储引擎,但存储引擎对于查询优化是有影响的。这个后面再具体展开介绍。

相关推荐
ting94520004 小时前
Kirki 深度技术解析:WordPress 自定义控件开发与可视化配置底层原理
人工智能·架构
weixin_446260854 小时前
高性能本地 AI Agent 工作流架构手册:Hermes Agent + Qwen3.6 组合部署
人工智能·架构
小短腿的代码世界4 小时前
Qwt性能优化实战:从源码架构到百万级数据点的实时渲染优化
信息可视化·性能优化·架构
梦想画家4 小时前
企业级 OpenClaw 实战:多用户身份映射与权限隔离架构指南
架构·智能体·openclaw
沪漂阿龙5 小时前
MySQL 面试题爆款详解:InnoDB 页机制、B+树索引、Buffer Pool、Redo Log、页分裂与性能优化一次讲透
b树·mysql·性能优化
oo哦哦5 小时前
全域矩阵系统的技术架构拆解:从单点效率到链路闭环
人工智能·矩阵·架构
love530love5 小时前
MingLi-Bench 项目部署实录:基于 EPGF 架构的工程化实践
人工智能·windows·python·架构·aigc·epgf·mingli-bench
人机与认知实验室6 小时前
从“九三架构”看人机耦合频率、相变与态势感知谱系
架构
思麟呀7 小时前
MySQL的事物管理
数据库·mysql
weixin_449290017 小时前
Docker + MySQL 在 Windows 11 上的本地安装部署文档
mysql·docker·容器