Mysql架构

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

逻辑架构

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

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

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

连接管理与安全性

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

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

优化与执行

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

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

相关推荐
啊森要自信10 小时前
CANN ops-cv:面向计算机视觉的 AI 硬件端高效算子库核心架构与开发逻辑
人工智能·计算机视觉·架构·cann
2的n次方_11 小时前
CANN ascend-transformer-boost 架构解析:融合注意力算子管线、长序列分块策略与图引擎协同机制
深度学习·架构·transformer
Fushize12 小时前
多模块架构下的依赖治理:如何避免 Gradle 依赖地狱
android·架构·kotlin
大雨淅淅13 小时前
Eureka从入门到精通:开启微服务架构的钥匙
微服务·云原生·eureka·架构
狗哥哥14 小时前
微前端路由设计方案 & 子应用管理保活
前端·架构
Max_uuc14 小时前
【架构心法】对抗熵增:嵌入式系统中的“数据完整性”保卫战
架构
·云扬·17 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
Tadas-Gao17 小时前
缸中之脑:大模型架构的智能幻象与演进困局
人工智能·深度学习·机器学习·架构·大模型·llm
晚霞的不甘18 小时前
Flutter for OpenHarmony 可视化教学:A* 寻路算法的交互式演示
人工智能·算法·flutter·架构·开源·音视频
筵陌18 小时前
MySQL索引及其底层原理(上)
mysql