前往小程序,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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
icem网格划分如何给内部面网格,ICEM CFD处理混合网格划分中低质量的问题
采用混合网格的主要优势在于:对于复杂的几何,我们可以将其分解成多个几何,对于适合划分结构网格的采用结构网格划分方式,而对于非常复杂的部分,可以使用非结构方式进行划分。
全栈程序员站长
2022/09/01
2.3K0
离心泵CAE_2_ICEM剖分网格_2_叶轮流道[通俗易懂]
针对本科毕设中所涉及到的离心泵数值分析和性能计算,将用最简单粗暴的方法,讲解如何基于CFturbo、ICEM、FLUENT来开展离心泵水力设计和性能分析的计算机辅助(CAE)实现。离心泵的水力设计由CFturbo软件实现;网格剖分由ICEM软件实现;CFD数值计算由FLUENT软件实现;并验证设计值是否达到。
全栈程序员站长
2022/09/01
1.3K0
离心泵CAE_2_ICEM剖分网格_2_叶轮流道[通俗易懂]
ANSYS Workbench单向流固耦合案例
流固耦合(Fluid-solid interaction,FSI)计算,通常用于考虑流体与固体间存在强烈的相互作用时,对流体流场与固体应力应变的考察。FSI计算按数据传递方式可分两类:单向耦合与双向耦合。所谓单向耦合,主要是指数据只从流体计算传递压力到固体,或者只从固体计算传递网格节点位移到流体。双向耦合则在每一时刻都同时向对方发送相应的物理量(流体计算发送压力数据,固体计算发送位移数据)。
CAE之家
2022/05/12
4.5K0
icem二维非结构网格划分_ICEM_CFD划分六面体结构网格
ICEM CFD是CAE前处理软件,可输出多种网格格式,供Fluent、CFX、Abaqus等CFD软件使用。ICEM有多种几何接口,如CATIA、SolidWorks, Solid Edge等。
全栈程序员站长
2022/08/24
1.6K0
icem二维非结构网格划分_ICEM_CFD划分六面体结构网格
icem合并面网格_ICEM CFD混合网格
对于结构十分复杂的几何模型,若能够将几何体分割成多个部分由多人分别进行网格划分,生
全栈程序员站长
2022/09/01
9000
Workbench常见网格划分方法讲解
今天给大家介绍一下Workbench常见网格划分方法,以及一些优缺点和使用注意事项。
知识先锋
2022/06/21
2.2K0
workbench mesh搅拌釜网格划分
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141559.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
4850
workbench mesh搅拌釜网格划分
GiD学习笔记「建议收藏」
1. GiD的工作模式有两个:preprocessing and postprocessing。
全栈程序员站长
2022/11/15
9080
GiD学习笔记「建议收藏」
轻松搞定ANSYS仿真参数化
在ANSYS应用程序中,可以将关键的仿真特性定义为参数(Parameters)。然后在Workbench中参数管理(Parameter Set)界面下管理参数,通过参数化驱动,实现快速更改仿真模型几何及拓扑参数、材料参数、网格参数、边界条件等设置,用来研究和优化不同设计方案下产品性能。
CAE学习笔记
2022/06/10
3.6K0
HyperMesh 在 CFD 网格划分中的专业运用:技巧、难点与突破
对于熟悉 CAE(计算机辅助工程)分析技术的专业人士而言,网格划分无疑是整个分析流程中最为耗时且至关重要的环节。它不仅要求高度的精确性,还直接影响到后续分析结果的准确性和可靠性。为应对这一挑战,业界开发了 HyperMesh 等功能强大的前处理软件,其专为优化网格划分流程而设计。
智造AI-CAE
2025/05/26
2120
HyperMesh 在 CFD 网格划分中的专业运用:技巧、难点与突破
ICEM对装配体进行网格划分实例「建议收藏」
注:solidworks2016开始无法打开或保存为其他格式(igs,stp).从某一个网页上看到的攻略可以了(衷心感谢)
全栈程序员站长
2022/08/24
1.2K0
ICEM对装配体进行网格划分实例「建议收藏」
ProCAST有限元铸造模拟仿真软件CAE
ProCAST作为铸造模拟方案的先锋,是全球首屈一指的材料物理学数值模拟原型和制造流程供应商。PROCAST成功的关键在于使用真实材料物理特性,能够进行更真实的模拟,来代替耗时的物理样机尝试和纠错过程。
用户10047369
2022/09/16
2.4K0
ProCAST有限元铸造模拟仿真软件CAE
Mysql Workbench使用教程
MySQL Workbench 为数据库管理员、程序开发者和系统规划师提供可视化的Sql开发、数据库建模、以及数据库管理功能。
全栈程序员站长
2022/09/05
8.9K0
Mysql Workbench使用教程
HyperMesh网格划分全教程
随着科技发展,CAE(计算机辅助工程)分析技术已成为众多领域不可或缺的核心工具。部分 CAE 软件虽兼具强大分析能力与较完善的前后处理功能,但在实际应用中发现,网格划分环节需耗费分析全流程约 80% 的时间。随着分析问题复杂度提升及行业对效率要求的提高,这类软件自带的前处理功能在面对复杂模型时,局限性日益凸显。
智造AI-CAE
2025/06/04
3300
HyperMesh网格划分全教程
Eclipse如何安装svn插件及使用「建议收藏」
具体操作:打开Eclipse –> Help –> Eclipse Marketplace –> 在Find中输入subclipse搜索 –> 找到subclipse点击install
全栈程序员站长
2022/11/10
3.6K0
Eclipse如何安装svn插件及使用「建议收藏」
必懂!FEM软件使用中7个关于画网格的错误观念
你还记得几百年前,大部分人相信地球是平的吗?(老美还有一大批人有这个想法。。。。。。) 所以说,我们每个人都有会有自认为是正确的,但是其实是错误的观点。。。。 这类观点来自你于的家庭,你的成长环境,甚
开物小编
2021/04/28
1.1K0
必懂!FEM软件使用中7个关于画网格的错误观念
仿真软件干货教程!Workbench中水流冲击桥墩仿真教学
首先,在Project-shematic中的左侧的Toolbox中找到对应的模块:Fluid Flow(Fluent)和Static Structural
开物小编
2021/04/25
3.1K0
Python学习笔记(一)PyCharm社区版安装教程
因为是自己的电脑,有python3.8,但是没有安装编译器,所以从PyCharm安装开始。
全栈程序员站长
2022/09/27
12.3K0
Python学习笔记(一)PyCharm社区版安装教程
Unity Mesh基础系列(一)生成网格(程序生成)
本教程假设你已经熟悉Unity Scripting的基本知识了。如果不清楚的可以看 时钟 的章节学习Unity的基础知识。而 构建分形 的章节里也提供了协程的基本介绍。
放牛的星星
2020/08/21
10.9K0
Unity Mesh基础系列(一)生成网格(程序生成)
Quartus ii 软件仿真基本流程(使用VHDL)「建议收藏」
这是VHDL系列教程的第一个教程。所谓教程,其实也就是记录我本人在学习过程中遇到的问题和学习内容的笔记,分享在这里供其他初学者参考,如果博客中出现任何错误或不严谨的地方,您可以在下方评论区指出来,您的反馈是对我最大的帮助,万分感谢。
全栈程序员站长
2022/11/04
5.9K0
Quartus ii 软件仿真基本流程(使用VHDL)「建议收藏」
推荐阅读
相关推荐
icem网格划分如何给内部面网格,ICEM CFD处理混合网格划分中低质量的问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档