MySQL在实际工作时候的两种数据读写机制:

  • 对redo log、binlog这种日志进行的磁盘顺序读写
  • 对表空间的磁盘文件里的数据页进行的磁盘随机读写

1 磁盘随机读

MySQL执行增删改操作时,先从表空间的磁盘文件里读数据页出来, 这就是磁盘随机读。

如下图有个磁盘文件,里面有很多数据页,可能需要在一个随机位置读取一个数据页到缓存,这就是磁盘随机读

因你要读取的这个数据页,可能在磁盘的任一位置,所以你在读取磁盘里的数据页时,只能用随机读。磁盘随机读性能极差,所以不可能每次更新数据都磁盘随机读,而是读取一个数据页之后,放到BP的缓存,下次要更新时,直接更新BP里的缓存页。

磁盘随机读的性能指标

IOPS

底层的存储系统可执行多少次磁盘读写操作/s。压测时可以观察一下。对数据库的crud操作的QPS影响非常大,某种程度上几乎决定了你每秒能执行多少个SQL语句,底层存储的IOPS越高,你的数据库的并发能力就越高。

磁盘随机读写操作的响应延迟

也是对数据库的性能有很大的影响。

假设你的底层磁盘支持你执行200个随机读写操作/s,但每个操作是耗费10ms,还是耗费1ms,也有很大影响, 决定你对数据库执行的单个crud SQL语句的性能。

包括你磁盘日志文件的顺序读写的响应延迟,也决定DB性能,因为你写redo log日志文件越快,那你的SQL性能越高。

比如你一个SQL语句发过去,磁盘要执行随机读操作加载多个数据页,此时每个磁盘随机读响应时间50ms,可能SQL语句要执行几百ms,但若每个磁盘随机读仅耗10ms,可能你的SQL就执行100ms即可。所以核心业务的数据库的生产环境机器推荐SSD,其随机读写并发能力和响应延迟要比机械硬盘好太多,可大幅提升数据库的QPS和性能。

2 磁盘顺序读写

当你在BP的缓存页里更新数据后,必须要写条redo log日志,它就是顺序写:在一个磁盘日志文件里,一直在末尾追加日志

写redo log时,不停的在一个日志文件末尾追加日志的,这就是磁盘顺序写。

磁盘顺序写的性能很高,几乎和内存随机读写的性能差不多,尤其是在DB里也用了os cache机制,就是redo log顺序写入磁盘之前,先是进入os cache,即os管理的内存缓存。

对写磁盘日志文件,最关注

磁盘每s读写数据量的吞吐量指标

即每s可写入多少redo log日志,整体决定DB的并发能力和性能。

每s可写入磁盘100M数据和每s可写入磁盘200M数据,对数据库的并发能力影响也大。因为数据库的每次更新SQL,都涉及:

  • 多个 磁盘随机读取数据页操作
  • 一条redo log日志文件顺序写操作

MySQL日志顺序读写及数据文件随机读写原理相关推荐

  1. (P60)io流类库:文件读写,二进制文件的读写,文件随机读写tellp、tellg、seekp、seekg

    文章目录 1.文件读写 2.二进制文件的读写 3.文件随机读写tellp.tellg.seekp.seekg 1.文件读写 文本读写方式1:<<, >>, 文本读写方式2:ge ...

  2. C语言之文件读写探究(七):随机读写文件

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  3. R语言 Rstudio对本地文件数据文件的读写和查看设置当前工作路径

    第一次写博客 各位老铁多多包涵 数据文件的读写 首先我们先说读的方法,在Rstudio提供一种方法==read.table()==函数来读取数据.这种方法对数据来源可以是一个Windows记事本或任何 ...

  4. BS-1python基础知识-1.19数据文件的读写

    数据文件的读写 文本文件读取 csv文件读取 定义 基本读取 按照列表索引方式读取 将reader读取出的内容给namedtuple 将读取出的内容给字典 csv文件的写 将list中内容写入 字典表 ...

  5. Python数据分析之Pandas读写外部数据文件

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 ...

  6. python txt文件读写 pandas_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  7. python 按列读取数据并写入txt_Python数据分析之Pandas读写外部数据文件!

    阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写入数据 3 excel文件 3.1 读取数据 3.2 写入数据 4 mysql数据库 5 mongodb数据库 1 引言 ...

  8. pandas 取excel 中的某一列_Python数据分析之Pandas读写外部数据文件

    点击"机器学习算法与Python实战","置顶"公众号 重磅干货,第一时间送达 阅读目录 1 引言 2 文本文件(txt.csv) 2.1 读取数据 2.2 写 ...

  9. java 文件随机读取_Java 实现文件随机读写-RandomAccessFile

    现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下"Lucene是一款非常优秀的全文检索库".可能大多数朋友会觉得这个需求很easy,说实话,确实easy ...

最新文章

  1. 真我新格调 勇敢使梦想×××
  2. java List的用法
  3. java的求和函数_Java Stream流之求和的实现
  4. 工作激发了我的热情,并不断激励着我” - SAP成都研究院Jerry Wang
  5. Hadoop怎么了,大数据路在何方?
  6. android系统关闭wifi,Android以编程方式打开/关闭WiFi HotSpot
  7. 怎么用psftp下载linux上的文件夹,使用PSFTP上传和下载Linux服务器文件.doc
  8. VS2012下安装GDAL库
  9. 散射理论对微波遥感的重要性
  10. office2018自动图文集_怎么才算工作里要求的“熟练使用office办公软件”?
  11. 自动驾驶赛道「孔雀东南飞」,何处安家?各有小算盘
  12. python实现下载压缩包并且解压
  13. Cisco2960交换机配置(二)
  14. 用C语言做一个简单的原神抽卡小游戏
  15. arcgis新建图层信息复制_ArcGIS中的数据库之间复制和粘贴数据
  16. 乐高机器人走进图书馆活动方案_乐高机器人制作~~乐高大派对
  17. ☆苹果MAC OS X ★ 安装双系统☆
  18. 培训班出来的java程序员,怎么成为真正的技术大牛?
  19. 【Linux正则表达式之grepegrep】
  20. Validators

热门文章

  1. mysql c语言写学生成绩管理系统,学生成绩管理系统C++实现代码
  2. 淘派、树图区块链研究院与芒果智娱达成战略合作,助力数字藏品高质量发展...
  3. 鼓风机行业现状分析及前景预测:行业分类、应用、企业及区域分析
  4. 犀利哥——我不做大哥好多年
  5. php 游戏数据 处理,PhpSpider采集游戏的新闻数据
  6. Google云增加root帐户登录
  7. 数据批量从nii格式转成npz格式
  8. matlab对nii文件处理,使用Nibabel库对nii格式图像的读写操作
  9. 万树IT:初学java开发用什么工具好
  10. 15道常见的Java集合类 面试题