欢迎关注公众号(通过文章导读关注:【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 的性能影响是很大的!