Mysql高级篇(上)—— Mysql架构介绍(二)

news2024/9/19 10:25:52

Mysql高级篇(上)

  • MySQL架构介绍(二)
    • 逻辑架构
      • 逻辑架构剖析
      • MySQL8.0中SQL执行流程
      • Linux环境下MySQL8.0中SQL执行原理
      • MySQL语法顺序
      • Oracle中SQL执行流程(了解)
      • 数据库缓存池 buffer pool(了解)
    • 存储引擎
      • 常见存储引擎简述
      • InnoDB 和 MyISAM 两种存储引擎的特点对比

MySQL架构介绍(二)

逻辑架构

逻辑架构剖析

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

MySQL8.0中SQL执行流程

在这里插入图片描述

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

Linux环境下MySQL8.0中SQL执行原理

MySQL 8.0 中,查询缓存功能已被完全移除,因为命中率低,相同SQL语句可能因为长度的不同就会被程序认为不同的SQL语句不再查询缓存,而且查询缓存的开销往往超过其带来的性能提升
我们通过查看执行记录来分析:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6条和第7SQL语句执行记录都一样,并没有查询缓存的过程,因为 MySQL8.0已经删除查询缓存的功能了

在这里插入图片描述

MySQL语法顺序

MySQL书写顺序执行顺序
select 查询列表7
from 表11
join 表22
on 连接条件3
where 筛选条件4
group by分组列表5
having 分组后的筛选6
order by排序列表8
limit 偏移数,展示条目数9

Oracle中SQL执行流程(了解)

Oracle数据库中,SQL执行的流程通常包括以下几个步骤,从解析执行再到返回结果。这个过程可以大致分为 解析阶段、执行阶段和返回阶段

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

示例流程:

SELECT first_name, last_name FROM employees WHERE employee_id = 100;

在这里插入图片描述

简化的SQL执行流程:

| SQL解析 |—> | 执行计划 | —> | 执行数据操作 | —> | 返回查询结果 |


这个简化流程涵盖了Oracle SQL执行的主要阶段,每个阶段可以根据具体的SQL类型(查询、修改、删除等)有不同的实现细节。

数据库缓存池 buffer pool(了解)

在数据库系统中,特别是在关系型数据库管理系统RDBMS)中,缓冲池Buffer Pool) 是一个用于缓存数据页数据块的内存区域。它的主要作用是减少数据库系统对磁盘I/O的依赖,提高数据访问的性能。不同的数据库管理系统(如 OracleMySQLPostgreSQL 等)对缓冲池的实现和管理方式可能有所不同,但其基本概念和目的都是相似的。

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

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

存储引擎

存储引擎数据库管理系统DBMS)中 负责存储、检索和管理数据的底层组件。不同的存储引擎具有不同的特性,适用于不同的应用场景。以下是一些常见的存储引擎介绍:

常见存储引擎简述

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

InnoDB 和 MyISAM 两种存储引擎的特点对比

特点InnoDBMyISAM
事务支持支持事务,提供 ACID 特性,适用于需要高数据一致性的场景。不支持事务,适用于不需要事务管理的应用。
锁机制行级锁定,提高并发性能,适合高并发写操作。表级锁定,适合读操作为主的场景,但在高并发写操作中可能导致性能瓶颈。
外键支持支持外键,能够维护表间数据的完整性。不支持外键,表间关系需由应用程序逻辑维护。
崩溃恢复自动崩溃恢复机制,通过日志和双写缓冲区保障数据的完整性。崩溃恢复能力较弱,可能需要手动修复表格。
性能写操作性能优越,适合高并发事务处理;复杂特性使其在简单只读查询中略逊。读操作性能优越,特别是在不需要事务支持的场景;表级锁定会限制写操作的并发性能。
存储结构采用 聚簇索引,数据行与主键存储在一起;使用 .ibd 文件存储数据和索引。使用 独立的表结构文件(.MYD 和 .MYI)存储数据和索引,表结构较为简单。
应用场景适用于 金融系统、电子商务平台等需要事务支持和数据一致性 的场景。适用于 数据分析、日志记录等读密集型、不需要事务支持 的场景。

总结来说,InnoDB 适合用于高并发、需要数据一致性和事务管理的应用,而 MyISAM 更适合读密集型、不需要事务的应用场景。根据具体的应用需求,选择合适的存储引擎可以显著提升数据库的性能和可靠性。

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

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

相关文章

86、pod部署策略

一、集群的调度 集群的调度: 怎么把pod部署到节点的方法。 1.1、调度的过程: scheduler是集群的调度器,主要任务就是把pod部署到节点上。 1.2、自动调度: 1、公平,保证每个可用的节点都可以部署pod 2、资源的高…

什么是工控安全,产线工控安全加固的方法

一、工控安全概述 想要了解工控安全,首先要了解其资产对象本身,也就是工业控制系统。 1、什么是工控 关于工业控制系统的定义,网上有很多,我就不再赘述,下面这张图是我从csdn找到的,个人觉得还不错。对照…

【多线程】CountDownLatch的简单实现

通过上一篇对CountDownLatch的使用,我们也明白了他的基本原理,接下来我们一起来实现一个CountDownLatch的基础效果 新建一个抽象类,包含countDownLatch需要的参数和方法 package com.atguigu.signcenter.nosafe.chouxiang;/*** author: jd* …

k8s集群的调度

目录 自动调度的原则 调度约束机制:list-watch apiserver和组件之间的watch机制 调度过程的默认算法 1.预算策略 预算的算法 2.优选策略 优选的算法 *用户定制节点部署 1.强制性节点部署 2.节点标签部署(匹配机制) 标签的增删改查…

selenium无法定位元素的几种解决方案

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、frame/iframe表单嵌套 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法: d…

Hadoop 下载

下载法一:官方下载 hadoop官网 1.选择要下载的版本,这里我以3.4.0为例进行说明; 2.跳转后,选择对应系统架构的,进行下载; 下载法二:国内镜像源下载 1.阿里云 这里我以mac m1为案例&#x…

【已解决】Halcon错误代码4104

问题描述 在运行的时候发现报错4104,如下图所示 解决 从字面上理解就是超出了计算机的内存空间了,那么着手解决的话就需要把没次训练的张数减少一些即可。去相对应的修改batch_size即可。 结果 如下图所示,正常在使用GPU训练。 搞定&…

Xilinx FFT IP使用

简介 本章节主要介绍FFT原理,以及Xilinx的FFT IP使用说明做详细介绍。 FFT介绍 FFT主要是将时域信号转换成频域信号,转换后的信号更方便分析。首先,FFT是离散傅立叶变换 (DFT) 的快速算法,那么说到FFT,我们自然要先讲清楚傅立叶变换。先来看看傅立叶变换是从哪里来的? 傅…

虚拟机无法打开网卡 service network restart失败

问题描述 命令重启网卡服务,结果报错如下:Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details 根据提示&#xff…

Hi3061M开发板初测——点亮小灯

目录 前言环境配置点亮led源码IDA集成了串口监视器最后下载到开发板中运行 前言 海思MCU体验官活动,Hi3061M开发板到手后,配置环境初步测试点亮小灯。 环境配置 环境配置按照gitee提供的redeme一步一步来配置起来很顺利。具体可自行查阅:环境…

文件包含漏洞PHP伪协议利用方法

使用php伪协议的前提 php.ini中的allow_url_fopen 、allow_url_include这两个参数需要修改为on 1.file协议 使用file协议读取Windows的系统文件 http://127.0.0.1/123.php?cmdfile:///c:/windows/system32/drivers/etc/hosts 2.php://filter协议 使用php://filter协议可以…

JsonCpp库的使用

目录 一、Json数据格式 二、JsonCpp介绍 2.1 Json::Value 2.2 序列化接口 2.3 反序列化接口 三、JsonCpp的使用 3.1 头文件包含 3.2 序列化 3.3 反序列化 四、补充 Json 是⼀种数据交换格式,它采⽤完全独⽴于编程语⾔的⽂本格式来存储和表示数据。 一、J…

P01-Java何谓数组

P01-Java何谓数组 一、数组声明创建 1.1 数组声明的语法 与c有所不同 在Java中,数组声明语法 首选语法: //数据类型[] 数组名称; int[] arr;次选,与c类似 //数据类型 数组名称[]; int arr[];1.2 数组创建语法 与c指针有所相似&#xff0…

嵌入式开发与应用按键外部中断实验二

一、实验目的 1. 通过实验掌握中断式键盘控制与设计方法; 2. 熟悉编写中断服务程序; 3. 掌握中断系统相关知识,掌握外部中断应用方法和处理过程; 4. 掌握实验处理器中断处理的软件编程方法; 5. 从按键程序的设计对系统的编程…

Prometheus_0基础_学习笔记

一、基本概念 Prometheus是由golang语言开发的一套开源的监控、报警、时间序列数据库的组合,是一款基于时序数据库的开源监控告警系统。 时间序列数据库:时间序列数据库(Time Serires Database , TSDB)不同于传统的关系型数据库。…

是缔造AI程序员,还是AI缔造程序员?

随着AIGC(如ChatGPT、MidJourney、Claude等)大语言模型的涌现,AI辅助编程工具的普及使得程序员的工作方式正在发生深刻变革。AI的迅猛发展,不仅提升了编程效率,也引发了对程序员未来职业前景的深思。我们应当如何在这一…

【归并分而治之】逆序对的应对之策

目录 1.前言2.题目简介3.求解思路为什么要这样做?快在哪?为什么这种方法会想到结合归并排序?如何在一左一右中统计剩下的逆序对个数?固定右边的数,用降序会怎么样???思路的本质是巧妙…

【MySQL07】【锁】

文章目录 一、前言二、事务的读写情况1. 写-写情况2. 读-写情况3. 一致性读4. 锁定读2.1 共享锁和独占锁2.2 锁定读的语句 5. 写操作 三、多粒度锁四、表锁和行锁1. 表级锁1.1 表级别的 S锁 和 X锁1.2 表级别的 IS 锁和 IX锁1.3 表级别的 AUTO-INC 锁 2. 行级锁2.1 行级锁的分类…

Qt6+VTK9环境配置

Qt6VTK9环境配置 说明1 Qt6安装2 VTK源码编译2.1 源码下载2.2 工程编译2.3 设置环境变量 3 QtVTK项目构建3.1 使用qmake管理项目3.2 使用cmake管理项目 参考资料 说明 由于想做一点新的东西,需要去探索一些工具,对于VTK之前没有了解过,在进行…

redis缓存和数据库通过延迟双删除实现数据一致性

为了提高查询的效率,我们经常会用到redis缓存,但是使用redis缓存就不可避免缓存一致性的问题。 先删缓存,再更新数据 如果并发查询可能会再删除缓存后,还没有更新数据库的时候,第二个线程读取到旧数据,并…