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

【MySQL进阶之路】磁盘随机读写和顺序读写对MySQL性能的影响

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书
在我后台回复「面试」可领取硬核面试笔记

文章导读地址:点击查看文章导读!

感谢你的关注!

在这里插入图片描述
当 MySQL 进行数据的增删改查时,会进行磁盘的随机读写顺序读写

先来说一下磁盘的随机读写

上边我们已经说到了表空间的概念,如果对表空间中的数据进行修改的话,那么最后落到磁盘上去就是磁盘的随机读写,因为表空间中的数据在执行了很多插入和删除操作之后,数据在磁盘中存储的位置并不是一直顺序存储的,因此只能使用 随机读写 去修改磁盘中的数据

因此随机读写的速度对 MySQL 的性能有着很大的影响,磁盘随机读的速度主要由两个指标进行观察:IOPS、响应延迟

  • IOPS:指的是每秒可以执行多少个磁盘随机读写操作。在对 MySQL 压测的时候,可以通过 dstat -r 来观察磁盘每秒可以执行的随机读写次数
  • 响应延迟:假如磁盘支持每秒 200 个随机读写操作,响应延迟指的是每个操作的耗时,耗时越低,SQL 语句执行的性能就越高

因此,在部署 MySQL 的机器上推荐使用 SSD 固态硬盘,相比于机械硬盘来说有着更好的随机读写的性能!

接下来说一下磁盘的顺序读写

对 redo log、bin log、undo log 这些日志文件的读写是磁盘的顺序读写,只要不停的向日志文件末尾追加数据就可以了,因此磁盘的顺序读写速度是是很快的,几乎可以和内存操作速度相当

并且还有 os cache 机制,先将写入日志的数据写到 os cache 中,这部分是在内存中的,之后再落入磁盘中去

而每次对 MySQL 的操作,都会记录到日志中去,因此日志中的顺序读写操作也决定着 MySQL 的性能!

而磁盘的顺序读写的性能最核心的指标就是 磁盘每秒读写数据的吞吐量 ,通过吞吐量的大小决定着磁盘写日志文件的性能,从而决定 SQL 语句的执行性能

下图为磁盘随机读写、顺序读写、内存读写的性能对比:

请添加图片描述

总结一下,一条 SQL 的写入伴随着磁盘的随机读写和顺序读写,因此这两个的速度对 MySQL 的性能影响是很大的!


http://www.kler.cn/news/233200.html

相关文章:

  • 《动手学深度学习(PyTorch版)》笔记7.7
  • Git 消除对某个文件的追踪
  • 【代码】Processing笔触手写板笔刷代码合集
  • 【0256】揭晓pg内核中MyBackendId的分配机制(后端进程Id,BackendId)(二)
  • C++初阶篇----新手进村
  • 微服务组件
  • go语言进阶篇——面向对象(一)
  • Redis 使用 RDB 持久化方式的过程
  • 基于鲲鹏服务器的LNMP配置
  • 机器学习:回归决策树(Python)
  • re:从0开始的CSS学习之路 7. 盒子模型
  • AR特效自研AI算法技术解决方案
  • JVM之GC垃圾回收
  • Ubuntu22.04安装黑屏(进入U盘安装引导时 和 安装完成后)
  • 【RT-DETR进阶实战】利用RT-DETR进行视频划定区域目标统计计数
  • 力扣刷题之旅:进阶篇(四)—— 滑动窗口问题
  • 牛客网SQL进阶127: 月总刷题数和日均刷题数
  • 【kafka】使用kafka client连接 kerberos认证的 kafka,scala版
  • 书生·浦语大模型第三课作业
  • Blender教程(基础)--试图的显示模式-22
  • TDengine用户权限管理
  • 图论:合适的环
  • 【Docker】了解Docker Desktop桌面应用程序,TA是如何管理和运行Docker容器(2)
  • Spring第三天
  • Vscode编译运行多个C++文件
  • Unity GC
  • 题目练习(生死时速2.0版)
  • C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
  • 学习通考试怎么搜题找答案? #学习方法#微信#其他
  • Gradle IDEA 乱码