【高级篇04】MySQL逻辑架构

news/2024/5/10 6:12:31/文章来源:https://blog.csdn.net/weixin_62633072/article/details/128439263

文章目录

  • 第四章:逻辑架构
    • 逻辑架构
    • SQL执行流程
    • 数据库缓冲池

第四章:逻辑架构

逻辑架构

  • 第一层:连接层。客户端访问MySQL服务器,首先建立TCP连接,经过三次握手建立连接成功后,MySQL服务器对TCP传输过来的账号密码做身份认证、权限获取。
  • 第二层:服务层。
    • SQL Interface :SQL接口。接收SQL命令、返回查询结果。
    • Parser:解析器。对SQL语句进行语法分析、语义分析。创建语法树
    • Optimizer:查询优化器。生成执行计划,表明应该使用哪些索引进行查询。
    • Caches & Buffers:查询缓存组件。从MySQL 5.7.20开始,不推荐使用查询缓存,并在 MySQL 8.0中删除 。
  • 第三层:插件式存储引擎层。负责MySQL中数据的存储和提取。与数据库文件进行通信。
    在这里插入图片描述

SQL执行流程

  1. 查询缓存。如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端。

    但MySQL的查询缓存命中率不高。因为查询缓存所缓存的是查询计划,所以只有完全相同的查询操作才会命中查询缓存,所以在MySQL8.0之后抛弃。

  2. 解析器。分析器先做“词法分析”,分析你输入的字符串代表什么;之后做“语法分析”,根据语法规则,判断输入的SQL语句,是否满足MySQL语法,生成语法树。
    在这里插入图片描述

  3. 优化器:在优化器中确定SQL语句的执行路径,交出执行计划给执行器。

  4. 执行器:执行之前判断该用户是否有权限。如果没有,就返回权限错误。如果具备权限,就执行SQL查询(调用存储引擎接口)并返回结果。

    在这里插入图片描述
    图:SQL的执行流程

MySQL中的Profiling工具,通过该工具可以获取一条SQL语句在执行过程中多种资源的消耗情况,如CPU、IO、程序的执行步骤等等。

set profiling=1; # 设置工具打开
select * from employees; # 执行查询
show profile; # 显示执行计划,查看程序的执行步骤

在这里插入图片描述

图:select * from employees 的执行步骤

数据库缓冲池

InnoDB存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作基本都是在访问页面。

MySQL会申请占用内存来作为数据库缓冲池,将磁盘中的页缓存到内存中的数据库缓冲池之后才可以访问,大大减少了I/O时间,提高了查询效率。

  • 缓冲池是什么?

    InnoDB存储引擎中一部分数据会放到内存中,缓冲池则占了这部分内存的大部分。

    在这里插入图片描述

​ 图:InnoDB 缓冲池包括了数据页、索引页、插入缓冲、锁信息、自适应 Hash 和数据字典信息等。

  • 缓存原则?

    “位置 * 频次”。数据存放在内存中,使用频次高的数据优先加载到缓存池中。

  • 缓存池如何读取数据?

在这里插入图片描述

  • 执行SQL修改了缓冲池中的数据,数据会马上同步到磁盘上吗?

    当对数据库中的记录进行修改时,会先修改缓冲池中的页里的记录信息,然后会以一定的频率刷新到磁盘上,并不是立刻回写。缓冲池会采用checkpoint机制将数据回写到磁盘上。

    比如,当缓冲池不够用时,可以强行采用checkpoint的方式,将不常用的脏页回写到磁盘上,然后再从缓冲池中将这些页释放掉。脏页:缓冲池中被修改过的页,与磁盘的数据页不一致。

  • 查看/设置缓冲池大小

    show variables like 'innodb_buffer_pool_size';
    
    set global innodb_buffer_pool_size = 268435456;
    

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP开发工具PhpStorm v2022.3——完全支持PHP 8.2

PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。 PhpStorm v20…

excel数据处理技巧:组合函数统计产品批号

这是一个看似普通的编号问题,可竟然动用了TEXT和SUMPRODUCT两个重量级的函数共同出手才得以解决。以往遇到的编号问题,大多数都是COUNTIF的拿手好戏,但是今天这个问题COUNTIF完全插不上手,来看看模拟的数据吧。 如图所示&#xff…

循环神经网络-基础篇Basic-RNN

循环神经网络-基础篇Basic-RNN 我们把全连接网络也叫做稠密网络DNN,其中X1到X8是不同样本的特征 而本文介绍的循环神经网络RNN主要处理的是具有序列关系的输入数据,即前面的输入和后面的输入是有关系的。例如天气,股市,金融数据和…

ES6 模块化、webpack、@ 代表src目录的设置

文章目录webpackSource Map 代表src目录的设置ES6 模块化要求默认 导出默认导入按需 导出、导入混合使用直接导入 并执行模块中的代码webpack 默认 约定: 自定义 打包的 入口与出口 const path require(path) // 导入node.js中 专门操作路径的模块 module.expor…

哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?

别人眼中的母乳喂养只是简单地把宝宝抱在怀里,让宝宝吃饱,超级简单。事实上,有很多母乳喂养。“麻烦事”比如母乳不足、堵奶、乳腺炎等,甚至更多“简单”漏奶会让宝宝头疼。有些妈妈很幸运,不知道什么是漏奶&#xff0…

基于Java+SpringBoot+vue等疫情期间网课管理系统详细设计和实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取联系🍅精彩专栏推荐订阅收藏👇&…

Git Bash Here和RStudio软件的问题解决

Git Bash Here和RStudio软件的问题解决 文章目录Git Bash Here和RStudio软件的问题解决0、 写在前面1、Git软件在任务栏图标空白2、RStudio软件2.1 警告信息InormalizePath(path.expand(path),winslash,mustWork)2.2 incomplete final line found by readTableHeader on报错3、…

为啥devc++程序运行正确返回不为0?而返回了一个特别大的数,详解。

例如运行以下程序: #include #include typedef char ElemType; typedef struct BiTNode{ char data; struct BiTNode *lchild; struct BiTNode *rchild; int DescNum;}BiTNode ,*BiTree; void CreateBiTree(BiTree *T) { char ch; scanf("%c",&ch); if(ch ){…

力扣(LeetCode)207. 课程表(C++)

拓扑排序 根据示例看出,课程表是否存在环,是问题的关键。这题的环,和数组、链表的环不一样,不好判,要转化成图判拓扑序列。 考虑向右和向左的方向,拓扑序列的所有边可以指向同一方向。 无环图进行重排序…

第一章:绪论

一、数据库系统概述 1、【单选题】记录内有结构,整体无结构,属于计算机发展过程的哪一阶段 正确答案: C 2、【单选题】数据库系统最小访问单位是 正确答案: C 3、【多选题】数据库管理系统提供的数据控制功能包括 正确答案&…

不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动

文章目录一、前言二、系列文章三、准备工作3.1 挑选I2C引脚3.2 测试设备:QMI8658C四、编写设备树节点4.1 查找MUX4.2 修改i2c1引脚配置4.2.1 修改前4.2.2 修改后五、编译、烧录dt.img5.1 烧录后效果六、编写test程序6.1 创建文件6.2 源码:Android.mk6.3 …

Docker常用操作命令总结(一)

文章目录一、Docker的应用场景二、Docker 的优点三、Docker 架构四、安装Docker1、更新 apt 包索引2、安装docker3、安装完成之后,运行命令sudo docker info,检查安装状态4、有可能,第一次需要手动启动服务.就需要执行下面的命令,…

图像处理:制作你的专属卡通头像和LOGO(圣诞节特别篇)

目录0 前言1 安装与贴图2 算法原理2.1 计算像素频率2.2 计算像素相对距离2.3 计算合适贴图3 配置功能4 使用:以圣诞老人为例0 前言 Tiler是一种使用各种其他较小图像平铺创建新图像的工具,它与其他马赛克工具不同,因为它可以适应多种形状、大…

基于Xlinx的时序分析与约束(5)----衍生时钟约束

衍生时钟约束语法 衍生时钟(Generated Clocks,又称为生成时钟)是指由设计中已有的主时钟通过倍频、分频或者相移等操作后产生的新的时钟信号,如由MMCM或PLL或由组合逻辑生成的倍、分频时钟信号。 衍生时钟约束必须指定时钟源&…

【正点原子I.MX6U-MINI移植篇】rootfs移植过程详解(三)

Linux三巨头己经完成了2个了,就剩最后一个rootfs(根文件系统)了,根文件系统的组成以及如何构建根文件系统是Liux移植的最后一步,根文件系统构建好以后就意味着我们己经拥有了一个完整的、可以运行的最小系统。以后我们…

程序员高手解决问题,都是从正确的提问开始

回顾各大技术网站、社区、问答,我们发现:真正的程序员高手都极度擅长提问。 好的提问不但能得到建设性的解决方案,更加能激发人们的好奇心、创造力和学习的动力。 毫不夸张地说,会提问的程序员一开口就赢了! 所以今…

QT基本组件与常用类

目录 一、设计师 Designer(掌握) 二、布局 Layout 2.1 布局的基本使用(掌握) 2.2 布局属性(掌握) 2.3 伸展器(掌握) 2.4 嵌套(掌握) 2.5 伸展与策略&#xff…

分布式缓存的四大痛点

目前开发中经常用到的缓存,是我们必不可缺的,他大大的提高了我们整个项目的响应速度和并发量。但是带来好处的同时,也给我们带了了新的问题:缓存穿透、缓存击穿、缓存雪崩以及缓存一致性这么四个问题,也是分布式缓存的…

IT大侦“碳”:VxRail的可持续法宝

环境Environmental      社会责任Social Responsibility      企业治理Corporate Governance      随着碳达峰、碳中和的逐步推进,越来越多的“大厂”或各行业的明星企业都开始重视自己的ESG报告,已然成为了商界新风尚。      可持续发展战略也与前沿技术密切相…

Java项目:Springboot体育器材管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 体育器材管理系统主要包含以下功能: 登录注册; 体育器材管理:显示器材表、显示价目表、显示供应商表&#x…