当前位置: 首页 > article >正文

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

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.kler.cn/news/290237.html

相关文章:

  • SprinBoot+Vue图书馆预约与占座微信小程序的设计与实现
  • C++string类相关OJ练习(2)
  • 【32项目】基于stm32f103c8t6的智能拐杖(文章末尾含完整代码)
  • MAC打开IDA Pro意外退出
  • 论文辅助笔记:LP_BERT
  • 【60天备战软考高级系统架构设计师——第一天:软件工程概述】
  • ListBox等控件的SelectedItem,SelectedValue,SelectedValuePath属性详解
  • 0904,关联式容器针对于自定义形式的写法(
  • 华为数据之道-读书笔记
  • 全能AI vs 专业AI:AI模型未来之路与市场潜力
  • Express Response类深度解析:全面掌握属性与方法,提升开发效率
  • Win 11补丁让AMD成亲儿子,性能最高提升35%
  • 神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?
  • JDK源码分析:HashMap
  • kubeadm部署 Kubernetes(k8s) 高可用集群【V1.28 】
  • net、udp、tcp
  • Linux之多线程概念
  • mongodb在Java中条件分组聚合查询并且分页(时间戳,按日期分组,年月日...)
  • OpenCV绘图函数(11)计算文本字符串在特定字体、尺寸和厚度下的大小的函数getTextSize()的使用
  • 模型从 HuggingFace 转存到 ModelScope
  • 【ubuntu使用笔记】Ubuntu Desktop 访问SMB共享文件夹
  • Spring声明式事务使用详情(知识点+案例)
  • 【Java】封装
  • 《Zookeeper 的监听机制及原理解析》
  • 后台使用Motionbuilder
  • 聚类算法-Kmeans聚类
  • 【60天备战软考高级系统架构设计师——第八天:设计模式概述】
  • Spring Boot项目中结合MyBatis详细使用
  • “智能化自动化” 架构之4:中间建模脑的软件设计三大原则-依赖倒置控制反转和依赖注入
  • 在react中利用three.js 渲染模型 让鼠标拖拽是模型转动