四、逻辑架构

文章目录

  • 1. 逻辑架构剖析
    • 1.1 服务器处理客户端请求
    • 1.2 Connectors
    • 1.3 第1层:连接层
    • 1.4 第2层:服务层
    • 1.5 第3层:引擎层
    • 1.6 存储层
    • 1.7 小结
  • 2. SQL执行流程
    • 2.1 MySQL 中的 SQL执行流程
    • 2.2 MySQL8中SQL执行原理
    • 2.3 MySQL5.7中SQL执行原理
    • 2.4 SQL语法顺序
  • 3. 数据库缓冲池(buffer pool)
    • 3.1 缓冲池 vs 查询缓存
    • 3.2 缓冲池如何读取数据
    • 3.3 查看/设置缓冲池的大小
    • 3.4 多个Buffer Pool实例
    • 3.5 引申问题

1. 逻辑架构剖析

1.1 服务器处理客户端请求

  • 首先 MySQL 是典型的 C/S 架构,即 Client/Server 架构,服务器端程序使用的 mysqld
  • 不论客户端进程和服务器进程是采用那种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)
    在这里插入图片描述

在这里插入图片描述

1.2 Connectors

  • Connectors,指的是不同语言中与SQL的交互。MySQL首先是一个网络程序,在TCP至上定义了自己的应用层协议。所以要使用MySQL,我们可以编写代码,根MySQL Server 建立TCP连接,之后按照其定义好的协议进行交互。或者比较方便的方法是调用SDK,比如Native C API、JDBC、PHP等各语言 MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQl进行交互
  • 接下来的 MySQL Server 结构可分为如下的三层:`

1.3 第1层:连接层

在这里插入图片描述

1.4 第2层:服务层

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.5 第3层:引擎层

在这里插入图片描述

1.6 存储层

所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统 上,以 文件 的方式存在的,并完成与存储引擎的交互。当然有些存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备,但现代文件系统的实现使得这样做没有必要了。在文件系统之下,可以使用本地磁盘,可以使用DAS、NAS、SAN等各种存储系统。

1.7 小结

在这里插入图片描述

2. SQL执行流程

2.1 MySQL 中的 SQL执行流程

在这里插入图片描述

MySQL的查询流程:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
经过解析器,MySQL就知道你要做什么了。在开始执行之前,还要经过优化器处理。一条查询可以有很多种执行方式,最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 MySQL8中SQL执行原理

在这里插入图片描述

  1. 确认profiling 是否开启

在这里插入图片描述

mysql> select @@profiling; 
mysql> show variables like 'profiling';

在这里插入图片描述

  1. 多次执行相同SQL查询
    在这里插入图片描述

  2. 查看profiles
    查看当前会话所产生的所有 profiles:

mysql> show profiles; # 显示最近的几次查询

在这里插入图片描述

  1. 查看profile
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 MySQL5.7中SQL执行原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结论不言而喻。执行编号2时,比执行编号1时少了很多信息,从截图中可以看出查询语句直接从缓存中获取数据。

2.4 SQL语法顺序

在这里插入图片描述

3. 数据库缓冲池(buffer pool)

在这里插入图片描述

3.1 缓冲池 vs 查询缓存

缓冲池和查询缓存是一个东西吗?不是。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2 缓冲池如何读取数据

在这里插入图片描述

在这里插入图片描述

3.3 查看/设置缓冲池的大小

在这里插入图片描述

在这里插入图片描述

3.4 多个Buffer Pool实例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.5 引申问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

答案:Redo Log & Undo Log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555672.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql知识体系总结梳理

mysql事务的四大特性 原子性(Atomicity) 原子性确保事务中的所有操作要么全部完成,要么全部不完成。事务是一个不可分割的最小工作单元。 例子:假设有一个银行转账操作,事务包括从账户A中扣钱和向账户B中加钱。如果…

探索Prompt Engineering:开启大型语言模型潜力的钥匙

前言 什么是Prompt?Prompt Engineering? Prompt可以理解为向语言模型提出的问题或者指令,它是激发模型产生特定类型响应的“触发器”。 Prompt Engineering,即提示工程,是近年来随着大型语言模型(LLM,Larg…

C++ struct和class的异同、C中和C++中struct的异同

一、前言 C中的struct结构体和C语言中的struct结构体差异较大。C中的struct结构体和C中的class类极为相似。 二、C的struct和class 1.相同点 (1)成员 struct和class都可以在主体中定义成员变量和成员函数!两者在定义成员变量和成员函数上的…

java中的多层循环控制,包括金字塔和九九乘法表的打印

多重循环控制 多重循环控制练习 多重循环控制 1.将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for,while,do…while均可以作为外层循环和内层循环。【建议一般用两层,最多不要超过3层,否则代码的…

管道内裂缝检测数据集 2000张 管道裂缝 带标注voc yol

管道内裂缝检测数据集 2000张 管道裂缝 带标注voc yol 管道内裂缝检测数据集 (Pipeline Crack Detection Dataset) 数据集概述 该数据集是一个专门用于训练和评估管道内裂缝检测模型的数据集。数据集包含2000张图像,每张图像都带有标注信息,标注格式为…

SimpleRR简洁双栏typecho主题模板

SimpleRR 使用原生 HTML CSS JS 构建。 设置文章封面 准备一张封面图,图片格式为 PNG 。推荐分辨率为 710 x 284px (封面图最大展示尺寸)。将图片重命名为 cover.png(可在设置中自定义)将图片上传至文章的“附件”…

【JavaEE】——文件IO的应用

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:文件的搜索(面试高频) 二:文件的复制 三&#xff1a…

ElasticSearch 备考 -- Snapshot Restore

一、题目 备份集群下的索引 task,存储快照名称为 snapshot_1 二、思考 这个涉及的是集群的备份,主要是通过创建快照,涉及到以下2步骤 Setp1:注册一个备份 snapshot repository Setp2:创建 snapshot 可以通过两种方…

InnoDB 磁盘结构 - Binlog

文章目录 binlog 的格式mysqbinlog 工具SHOW binlog events;binlog 和 redo log 对比 https://dev.mysql.com/doc/refman/8.4/en/binary-log.html binlog 全称 BinaryLog,是 MySQL 数据库中用于记录所有更改数据库状态的事件的日志文件。它主要用于以下几个目的&am…

分析JS Crash(进程崩溃)

一、JS Crash异常检测能力 1、JS Crash日志规格 以下是进程崩溃日志信息中对应字段解释。 Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息 Module name:com.example.myapplication <- 模块名 Version:1.0.0 <- 版本号 Pid:579 <- 进程号 Uid:0 <- 用户ID…

水凝胶发生器,不对称设计妙,医电应用前景广

大家好&#xff01;今天来了解一种具有工程机械离子不对称性的水凝胶发生器——《A high-current hydrogel generator with engineered mechanoionic asymmetry》发表于《Nature Communications》。嘿&#xff01;你能想象一种材料&#xff0c;它能像魔法一样在低频运动下产生高…

AI 写作工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: ​ 前言: 在信息时代的浪潮中&#xff0c;AI 写作应运而生。它以强大的算法和海量的数据为支撑&…

人工智能时代中,产品经理的生存指南

前言 从AI技术到商业变现的过程中&#xff0c;一招不慎&#xff0c;很可能满盘皆输。在AI时代&#xff0c;一个优秀的产品经理&#xff0c;应该具备哪些能力呢&#xff1f;通过对人工智能产品生命周期的解读&#xff0c;明确在各个环节中&#xff0c;人工智能所需要承担的工作…

大厂出来的人为什么不比你高效?

在最近参加的一个线下聚会上&#xff0c;有人问我&#xff1a;“我们单位有来自阿里、腾讯、华为这些大厂的人&#xff0c;为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率&#xff1f;”你别说&#xff0c;这一问所反映的现象&#xff0c;与我在阿里巴巴工作时…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-9000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【2024年最新】基于springboot+vue的点餐平台网站lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Python+Django预约管理系统

程序示例精选 PythonDjango预约管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjango预约管理系统》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习…

kubernetes(K8s)学习(一)

本文主要是搭建一个k8s平台&#xff0c;并部署一个springboot的jar包&#xff0c;后续以此作为学习k8s的环境。 1. 搭建k8s集群 网上有很多指导&#xff0c;大家可以在网上搜索一下&#xff0c;比如这个&#xff1a;K8s搭建集群-CSDN博客&#xff0c;本人通过VMware安装3台虚拟…

昇思学习打卡营第33天|基于MindSpore的恶性皮肤肿瘤识别

1. 实验介绍 本次实验的目标是基于MindSpore框架&#xff0c;训练一个ResNet50模型&#xff0c;用于恶性皮肤肿瘤的分类识别。本实验将使用包含四类皮肤肿瘤图片的数据集&#xff0c;针对ResNet50模型进行微调&#xff0c;训练出一个能够精准分类皮肤病的模型。主要过程包括数据…

Java项目实战II基于Java+Spring Boot+MySQL的房产销售系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着房地产市场的蓬勃发展&#xff0c;房产销售业务日益复杂&#xff0c;传统的手工管理方式已难以满…