当前位置:网站首页>MYSQL架构——逻辑架构
MYSQL架构——逻辑架构
2022-07-04 22:17:00 【swttws.】
目录
一、整理逻辑架构
MySQL主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。如下图:

1、连接层
(1)为客户端连接服务,包含本地socket通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信;
(2)主要完成连接处理,授权认证,安全处理;
(3)引入线程池,为通过安全认证的客户端提供线程;
(4)同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
2、服务层
该层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化及部分内置函数的执行。
(1)Management Serveices & Utilities: 系统管理和控制工具 ;
(2)SQL interface :接受用户SQL命令,并返回用户查询结果;
(3)Parser: 解析器:SQL命令解析与验证;
(4) Optimizer: 查询优化器;
(5) Cache和Buffer: 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等 。
3、引擎层
存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。
4、存储层
数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。
二、查询SQL执行周期
1、修改配置文件,开启查询缓存
(1)修改配置文件/etc/my.cnf,新增一行:query_cache_type=1
重启MySQL服务
systemctl restart mysqld
2、开启查询执行计划
show variables like '%profiling%';
set profiling=1;
3、执行两次相同查询语句
select * from mydb.mytbl where id=1 ;
4、显示最近执行的SQL语句
show profiles;
5、查询6,7执行计划
(1)6的执行计划
show profile cpu,block io for query 6;
(2)查询7的执行计划
show profile cpu,block io for query 7;
可以发现7执行的编号比6少了很多信息,说明查询语句可以冲从缓存中获取数据,SQL语句必须一致才可以缓存命中,如果对·数据库insert,update,delete,缓存则会失效
三、查询流程
1、mysql客户端与服务端进行连接,发送查询语句,服务端会先检查缓存(query cache),若缓存中有与该查询语句一样的语句,直接返回结果,否则进行语句解析;
2、如果某个查询结果已经位于缓存中,服务器就不会再对查询进行解析、优化、以及执行。它仅仅将缓存中的结果返回给用户即可,这将大大提高系统的性能;
3、语法解析器和预处理:首先mysql通过关键字将SQL语句进行解析,并生成一颗对应的“解析树”;
4、mysql解析器将使用mysql语法规则验证和解析查询;
5、预处理器则根据一些mysql规则进一步检查解析树是否合法,当查询优化器当解析树被认为是合法的了,并且由优化器将其转化成执行计划;
6、一条查询可以有很多种执行方式,最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划。
7、然后,mysql默认使用的BTREE索引,并且一个大致方向是:无论怎么折腾sql,至少在目前来说,mysql只少用到表中的一个索引。
边栏推荐
- [Yugong series] go teaching course 003-ide installation and basic use in July 2022
- UML图记忆技巧
- With this PDF, we finally got offers from eight major manufacturers, including Alibaba, bytek and Baidu
- 常用的开源无代码测试工具
- Locust性能测试 —— 环境搭建及使用
- The proofreading activity of data science on the command line second edition was restarted
- Scala下载和配置
- Flask 上下文详解
- Play with grpc - go deep into concepts and principles
- Shell 脚本实现应用服务日志入库 Mysql
猜你喜欢

SPSS安装激活教程(包含网盘链接)

PMO: compare the sample efficiency of 25 molecular optimization methods

傳智教育|如何轉行互聯網高薪崗比特之一的軟件測試?(附軟件測試學習路線圖)

常用的开源无代码测试工具

Naacl-22 | introduce the setting of migration learning on the prompt based text generation task

嵌入式开发:技巧和窍门——提高嵌入式软件代码质量的7个技巧

抖音实战~评论数量同步更新

国产数据库乱象

It is said that software testing is very simple, but why are there so many dissuasions?
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
随机推荐
传智教育|如何转行互联网高薪岗位之一的软件测试?(附软件测试学习路线图)
卷积神经网络模型之——LeNet网络结构与代码实现
如何实现轻松管理1500万员工?
In Linux, I call odspcmd to query the database information. How to output silently is to only output values. Don't do this
达梦数据凭什么被称为国产数据库“第一股”?
Naacl-22 | introduce the setting of migration learning on the prompt based text generation task
Solana chain application crema was shut down due to hacker attacks
Force buckle 3_ 383. Ransom letter
Logo special training camp Section IV importance of font design
Mysql root 账号如何重置密码
Microservices -- Opening
[the 2023 autumn recruitment of MIHA tour] open [the only exclusive internal push code of school recruitment eytuc]
NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元
Huawei Nova 10 series released Huawei application market to build a solid application security firewall
Google Earth Engine(GEE)——以MODIS/006/MCD19A2为例批量下载逐天AOD数据逐天的均值、最大值、最小值、标准差、方差统计分析和CSV下载(北京市各区为例)
Shell 脚本实现应用服务日志入库 Mysql
About stack area, heap area, global area, text constant area and program code area
2022-07-04: what is the output of the following go language code? A:true; B:false; C: Compilation error. package main import “fmt“ func main() { fmt.Pri
Force buckle 2_ 1480. Dynamic sum of one-dimensional array
30余家机构联合发起数字藏品行业倡议,未来会如何前进?






