Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql的三层体系结构

mysql的三层体系结构

原创
作者头像
Kami米雅
发布于 2021-12-10 02:04:15
发布于 2021-12-10 02:04:15
1.2K0
举报
文章被收录于专栏:上云服务专题上云服务专题

Mysql:是单进程多线程数据库

层名称

作用

处理网络链接层

连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。

SQL处理层

也叫MySQL服务器层,包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现

存储引擎层

负责数据存储,存储引擎的不同,存储方式、数据格式、提取方式等都不相同,这一部分也是很大影响数据存储与提取的性能的。但是,与分层的思想一致,SQL处理层是通过API与存储引擎通信的,API屏蔽了下层的差异,下层提供对外接口,上层负责调用即可,不必清楚下层是怎么实现的。

第1层网络连接层介绍:网络连接层主要有连接池和线程池。

mysql的连接管理方式:

Mysql-Server同时支持3种连接管理方式,包括No-Threads,One-Thread-Per-Connection和Pool-Threads。No-Threads:表示处理连接使用主线程处理,不额外创建线程,这种方式主要用于调试;One-Thread-Per-Connection:是线程池出现以前最常用的方式,为每一个连接创建一个线程服务;Pool-Threads:则是线程池方式。

为什么有连接池和线程池?

每创建一个新的会话(或链接),mysql内部创建一个新的用户线程来提供服务,当连接被销毁,线程也被销毁.即一个连接有一个线程.这种创建链接和销毁链接都会消耗cpu性能.为了降低这种消耗,有了连接池和线程池.

连接池和线程池说明:

连接池主要用来管理客户端的连接,避免重复的连接/断开操作,是将空闲的连接缓存起来,可以复用。从而减少了连接mysql server/断开mysql server的开销与成本,从而提升性能。但是mysql的连接池不能获取mysql server的查询处理能力以及当前的负载情况。线程池:线程池的操作是在mysql server端,并且设计就是用来管理当前并发的连接和查询。

thread pool到底能够提升多少性能?

根据Oracle Mysql官方的性能测试:在并发达到128个连接以后.没有线程池的Mysql性能会迅速降低。使用线程池以后,性能不会出现波动,会一直保持在较好的状态运行。在读写模式下,128个连接以后,有线程池的Mysql比没有线程池的Mysql性能高出60倍。在只读模式下,512个连接以后,有线程池的Mysql比没有线程池的Mysql性能高出18倍。

什么时候可以考虑使用thread_pool?

show global status like '%threads_running%';其值是mysql server当前并发执行语句的数量,如果这个值一直保持在40左右的区间,那么可以考虑使用thread pool。如果你使用了innodb_thread_concurrency参数来控制并发的事物量,那么使用线程池将会获得更好的效果。如果你的工作是有很多短连接组成的,那么使用线程池是有益的。

第2层sql处理层(SQL Layer):主要有SQL Interface、Parser、Optimizer、Cache和Buffer

Sql层功能:

功能:解析器,授权,优化器,查询执行,查询高速缓存,查询日志记录,跨存储引擎功能。1.解析器:解析SQL语法,形成语法树2.授权:SQL的权限验证  *.*对于指定的库和表3.优化器:CBO(基于成本的优化),根据统计信息--> SQL改写 --->执行计划(即选哪种算法执行)

sql层处理数据流程:

用户传入sql-----查询缓存(命中缓存可直接返回结果)----解析器(生成sql解析树)----预处理器(可能sql等价改写)-----查询优化器(生成sql执行计划)----查询执行引擎----结果返回给用户。

SQL接口:(SQL Interface)

功能:接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

解析器:(Parser)--生成sql解析树

SQL命令传递到解析器的时候会被解析器验证和解析(进行语义和语法的分析,分解成数据结构,如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的 ),生成sql解析树。解析器是由Lex和YACC实现的,是一个很长的脚本。

查询优化器:(Optimizer) --生成执行计划

SQL语句在查询之前会使用查询优化器对查询进行优化,根据客户端请求的 query 语句,和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优的策略,告诉后面的程序如何取得这个 query 语句的结果,即执行计划。查询优化器使用选取-投影-联接策略生成执行计划。

选取-投影-联接:

用一个例子就可以理解: select uid,name from user where gender = 1;这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤。这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤。将这两个查询条件联接起来生成最终查询结果。

查询缓存功能(Cache和Buffer):(建议关闭)

当执行sql的时候,sql第一次被执行,然后再次执行的时候如果相同的sql,可以不进行解析,直接返回结果,提高查询效率.关闭查询缓存:query_cache_type = 0    query_cache_size = 0局限性比较大,任何查询结果有变更,都需要进行更新,对于mysql性能影响比较严重,整个更新过程的锁颗粒度的比较高,还持有全局锁,效率很低.建议:是否使用查询缓存,不用.(在mysql8.0里没了查询缓存功能.)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关系型数据库 MySQL 体系结构详解
通过前面几篇文章学会如何安装 MySQL 以及基础知识后,我们还需要学习体系结构,MySQL 和 Oracle 体系结构类似,如果学过 Oracle 可以类比记忆,基础牢固才能学好数据库,才能做一个合格的 DBA,下面一起来看看。
JiekeXu之路
2019/08/15
2.2K0
MySQL学习笔记(一)MySQL体系结构
MySQL是当今最通用的数据库软件之一,也是大部分人接触最多,时间最长的数据库软件之一。深入了解MySQL的架构和设计对于DBA,研发和运维都非常重要,能够帮助我们在日常工作中更好地理解和运用MySQL。
scarlett学习手册
2020/01/16
1.4K0
MySQL - 体系结构初探
MySQL 从最初的 1.0、3.1 到后来的 5.x ,到今天的8.x,发生了各种各样的变化。
小小工匠
2021/08/17
4350
MySQL体系结构与参数文件及查询优化器详解
MySQL是由SQL接口,解析器,优化器,缓存,存储引擎组成的(SQL Interface、 Parser、 Optimizer、Caches&Buffers、Pluggable Storage Engines)
星哥玩云
2022/08/17
7580
MySQL体系结构与参数文件及查询优化器详解
MySQL一:架构体系
我们一般都不会去操作数据库本身,「而是通过SQL语句调用MySQL,由MySQL处理并返回执行结果」。那么SQL语句是如何执行sql语句的呢?
云扬四海
2022/09/26
8070
MySQL架构特征笔记
存储引擎API包含了十几个底层函数,如执行 “ 开始一个事务 ” ,或取出有特定主键的行,但存储引擎 一般不会去解析SQL, (InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信, 而只是简单的响应上层的服务器请求。
编程思维
2023/03/24
5721
MySQL架构特征笔记
MySQL架构与SQL执行流程
负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。而连接线程的主要工作就是负责 MySQL Server 与客户端的通信, 接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等
Java学习录
2019/06/01
1.7K0
MySQL的逻辑架构--逻辑架构剖析、SQL执行流程、数据库缓冲池(buffer pool)
TCP连接收到请求后,必须分配给一个线程专门与这个客户端的交互,所以还有个线程池,每一个连接从线程池中获取线程,省去了创建和销毁线程的开销 所以连接管理的职责就是负责认证、管理连接、获取权限信息
才疏学浅的木子
2022/11/22
7040
MySQL的逻辑架构--逻辑架构剖析、SQL执行流程、数据库缓冲池(buffer pool)
麦斯蔻(MySQL)的一生
🐬 在一个遥远的数字王国里,MySQL是一位勤劳的数据库管家,负责管理和守护着庞大的数据宝库。每当有人向王国发出查询请求,就是麦斯蔻(MySQL)大显身手的时刻。
不惑
2024/05/14
4740
麦斯蔻(MySQL)的一生
一、 MySQL的起源
MySQL用了很久,但是一直也是工作的使用,对于MySQL的知识点都比较零散碎片,一直也没有整体梳理过,趁着最近不忙,梳理一下相关的知识点。
云扬四海
2022/09/26
8800
mysql之存储引擎 体系结构 查询机制(二)
1,插拔式的插件方式 ,插拔式的插件方式 2,存储引擎是指定在表之上的,即一个库中的每一个表都可 ,存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎。 3,不管表采用什么样的存储引擎,都会在数据区,产生对应 ,不管表采用什么样的存储引擎,都会在数据区,产生对应的一个 的一个frm文件(表结构定义描述文件)
周杰伦本人
2022/10/25
8740
mysql之存储引擎 体系结构 查询机制(二)
【DB应用】MySql数据库体系架构概述
2 Management Serveices & Utilities: 系统管理和控制工具
Luga Lee
2022/03/25
1.1K0
【DB应用】MySql数据库体系架构概述
【云原生进阶之数据库技术】第一章MySQL-3.1-整体架构
MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。
江中散人_Jun
2024/03/05
3740
【云原生进阶之数据库技术】第一章MySQL-3.1-整体架构
MySQL体系结构
连接者:不同语言的代码程序和mysql的交互(SQL交互) 1、连接池 管理、缓冲用户的连接,线程处理等需要缓存的需求 2、管理服务和工具组件 系统管理和控制工具,例如备份恢复、Mysql复制、集群等  3、sql接口 接受用户的SQL命令,并且返回用户需要查询的结果 4、查询解析器 SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构) 5、查询优化器 SQL语句在查询之前会使用查询优化器对查询进行优化 select id,name from user where age = 40;  a、这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行age过滤  b、这个select查询先根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤  c、将这两个查询条件联接起来生成最终查询结果 6、缓存 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据 7、插入式存储引擎 存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库 中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
星哥玩云
2022/08/18
5530
MySQL体系结构
MySQL架构与执行流程
  MySQL数据库自己用了也有两三年了,基本上只是掌握增删改查的sql语句,从没有思考过MySQL的内部到底是怎么根据sql查询数据的,包括索引的原理,只知道加了索引查的就快,不知道为什么加上索引效率就会提升,包括索引的限制和优化也知之甚少,所以决定开一专题来学习与记录MySQL。
会说话的丶猫
2020/08/06
8540
MySQL架构与执行流程
mysql体系结构
2用户名密码验证(通过授权表做的验证数据库一启动,会把授权表加载到内存中 mysql.user mysql.db mysql.table_priv mysql.column_priv)
萧晚歌
2021/11/17
1.1K0
【MySQL 系列】MySQL 架构篇
Server 层:负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接池,执行器、优化器、解析器、预处理器、查询缓存等。另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存储过程、触发器、视图等)都在 Server 层实现;
栗筝i
2024/03/19
2.5K0
【MySQL 系列】MySQL 架构篇
Mysql体系结构
客户端连接器 mysql为外部程序提供的客户端connector,例如 PHP JAVA .NET RUBY 连接管理 管理客户端连接的相关操作,例如 连接线程池、权限验证、线程重用、连接限制 SQL层 SQL接口 接收客户端的SQL命令,并返回命令结果 SQL 解析器 SQL命令传递到解析器的时候会被解析器验证和解析 将SQL语句分解成数据结构——分析树,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 如果在解析中遇到错误,那么就说明这个sql语句是不
dys
2018/04/02
1.7K0
Mysql体系结构
第04章_逻辑架构
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
2830
第04章_逻辑架构
MySQL 的体系结构详解
MySQL 是一个流行的关系型数据库管理系统,以其高性能、灵活性和可靠性而闻名。它采用了分层的体系结构设计,主要包括连接层、服务层、存储引擎层和底层存储系统。这种设计使得 MySQL 既可以满足高并发的请求,又能提供灵活的存储方案。
九转成圣
2025/01/20
5490
MySQL 的体系结构详解
相关推荐
关系型数据库 MySQL 体系结构详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档