Mysql架构

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

逻辑架构

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

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

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

连接管理与安全性

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

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

优化与执行

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

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

相关推荐
ZhengEnCi10 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
幽灵诶11 小时前
Mysql(基于测试的学习)
数据库·mysql
宇宙无敌暴龙战士66611 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊11 小时前
MySQL 的四种隔离级别
java·数据库·mysql
码流子12 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
梦曦i13 小时前
uni-app x下自研架构的工程化突围
前端·架构·uni-app x
这个DBA有点耶13 小时前
连拿六年第一后宣布出海:国产数据库凭什么敢撕掉“平替”的标签?
数据库·人工智能·架构
高晶13 小时前
SPMI 控制器 RTL 设计与验证新手入门
设计模式·程序员·架构
paopaokaka_luck14 小时前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts