Mysql架构

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

逻辑架构

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

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

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

连接管理与安全性

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

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

优化与执行

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

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

相关推荐
jeffsonfu20 分钟前
从LeNet到EfficientNet:经典CNN架构二十年演进史
人工智能·架构·cnn
菀亓26 分钟前
ubuntu系统mysql安装
mysql
程序员贺加贝44 分钟前
别被 saveBatch 骗了:一次 MyBatis-Plus 批量插入性能排查
mysql
l1258651 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
宠友信息1 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
悟天特斯2 小时前
智慧楼宇边缘计算实战:从端侧自治到云边协同的算力下沉架构
人工智能·物联网·架构·边缘计算
__zRainy__2 小时前
Node系列 · 数据库:单表查询
数据库·后端·mysql·node.js
xcLeigh2 小时前
聊聊数据库迁移工具怎么从单机走向“云+端+服务”,KDMS架构拆解
数据库·架构·数据库迁移·kes·kdms·架构拆解
凤山老林3 小时前
高可用服务容错架构:Spring Boot 集成 Resilience4j 实战指南
spring boot·后端·架构·resilience4j
ZJU_统一阿萨姆3 小时前
【算子开发】扫描(Scan)与前缀和
开发语言·arm开发·架构·系统架构·硬件架构