当前位置:网站首页>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只少用到表中的一个索引。
边栏推荐
- PostgreSQL server programming aggregation and grouping
- PostgreSQLSQL高级技巧透视表
- Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
- 特征缩放 标准化 归一化
- 测试必会:BUG的分类及推进解决
- SQL中MAX与GREATEST的区别
- sqlserver对数据进行加密、解密
- Concurrent optimization summary
- Now MySQL cdc2.1 is parsing the datetime class with a value of 0000-00-00 00:00:00
- Prosperity is exhausted, things are right and people are wrong: where should personal webmasters go
猜你喜欢
LOGO特训营 第一节 鉴别Logo与Logo设计思路
【OpenGL】笔记二十九、抗锯齿(MSAA)
Deveco device tool 3.0 release brings five capability upgrades to make intelligent device development more efficient
LOGO special training camp section I identification logo and Logo Design Ideas
Locust performance test - environment construction and use
Introduction and application of bigfilter global transaction anti duplication component
Redis sentinel simply looks at the trade-offs between distributed high availability and consistency
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
Zhiyang innovation signed a cooperation agreement with Huawei to jointly promote the sustainable development of shengteng AI industry
Logo Camp d'entraînement section 3 techniques créatives initiales
随机推荐
LOGO特訓營 第一節 鑒別Logo與Logo設計思路
Short video system source code, click the blank space of the screen, the keyboard does not automatically stow
Use blocconsumer to build responsive components and monitor status at the same time
ACM multimedia 2022 | counterfactual measurement and elimination of social prejudice in visual language pre training model
Concurrent optimization summary
LOGO特训营 第二节 文字与图形的搭配关系
sqlserver对数据进行加密、解密
leetcode 72. Edit Distance 编辑距离(中等)
Scala下载和配置
Sqlserver encrypts and decrypts data
并发优化总结
sobel过滤器
How to manage 15million employees easily?
Radio and television Wuzhou signed a cooperation agreement with Huawei to jointly promote the sustainable development of shengteng AI industry
Google Earth Engine(GEE)——以MODIS/006/MCD19A2为例批量下载逐天AOD数据逐天的均值、最大值、最小值、标准差、方差统计分析和CSV下载(北京市各区为例)
达梦数据凭什么被称为国产数据库“第一股”?
Energy momentum: how to achieve carbon neutralization in the power industry?
【OpenGL】笔记二十九、抗锯齿(MSAA)
MySQL存储数据加密
30余家机构联合发起数字藏品行业倡议,未来会如何前进?