mysql日志顺序读写及数据文件随机读写原理

JavaEdge. JavaEdge.     2023-03-09     373

关键词:

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:31mysql数据库的日志顺序读写以及数据文件随机读写的原理

...时候的两种数据读写机制,一种是对redolog、binlog这种日志进行的磁盘顺序读写,一种是对表空间的磁盘文件里的数据页进行的磁盘随机读写。2.磁盘随机读写操作磁盘随机读操作MySQL在工作的时候,尤其是执行增删改... 查看详情

读写分离及主从复制

...步到从服务器上二、实现原理:  a) MySQL中有一个日志bin日志(也叫二进制日志),此日志记录了所有操作数据库的的sql语句  b) 主从复制原理实际上是多台服务器都开启了bin日志,然后主服务器会把执行过的sql语句... 查看详情

随机读写与顺序读写怎么去理解

...程导致结果不尽人意。一起认识下关于磁盘的读写原理和顺序读写,随机读写。首先磁盘是如何存储数据的?信息存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面... 查看详情

mysql主从复制及读写分离实际部署与验证(代码片段)

...分离测试:三、总结:1.主从复制里三个线程两个日志2.读写分离优点前言:在现网生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性、高可用性还是高并发等各个方面都是... 查看详情

mysql数据库--主从复制读写分离(代码片段)

文章目录一、主从复制1、原理2、二进制日志的保存方式3、主从复制策略4、搭建MySQL主从复制二、读写分离1、原理2、读写分离3、读写分离的好处4、实现方式4.1、Amoeba简介五、搭建MySQL读写分离1、实验准备2、amoeba(192.168.35.30)安... 查看详情

mysql数据库——主从复制与读写分离(代码片段)

...QL主从复制1.支持的复制类型2.主从复制的工作过程是基于日志3.请求方式4.主从复制的原理5.MySQL集群和主从复制分别适合在什么场景下使用6.为什么使用主从复制、读写分离7.用途及条件8.mysql主从复制存在的问题9.MySQL主从复制延... 查看详情

github标星过万!mysql绝对值

...百万级TPS?先用一张思维导图直接告诉你答案:顺序读写磁盘生产者写入数据和消费者读取数据都是顺序读写的,先来一张图直观感受一下顺序读写和随机读写的速度:从图中可以看出传统硬盘或者SSD的顺序读写... 查看详情

logstructuredmergetrees(lsm)

...存放数据,B+树是一个随机读写的数据结构。我们知道,顺序读写要比随机读写快无数倍,所以需要把数据结构改成顺序读写。 3     应用场景LSM是当前被用在许多产品的文件结构策略:HBase,Cassandra,LevelDB,SQL... 查看详情

linux——mysql主从复制读写分离

...致性和完整性 主从复制原理:主MySQL需要开启二进制日志保存用户对Mysql数据的操作。   从数据库监听主MySQL日志变化,发现更新复制日志到本地,读取复制到本地的日志,执行日志对数据库的操作,保证主和从数据库... 查看详情

主从复制读写分离原理重温

W:mysql主从复制原理Q:n 主服务器写入mylog日志,之后提交事物n 通过IO线程   写入从服务器日志。从服务器根据自己的日志,重放读取数据。n 保持和主服务器一致 ,实现主从复制 W:读写分离原理?Q:&... 查看详情

mysql主从复制和读写分离

...主服务器更新数据,执行命令,将会记录到自己的二进制日志里面,然后从服务器开始一个I/O线程,用于读取主服务器的已更新或以变化的二进制文件,前提是主服务器要给从服务器这个权限,读取以后,将数据放入中继日志里... 查看详情

kafka速度分析(代码片段)

...求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。为什么写入速度快?Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafka采用了两个技术,顺序写入和MMF... 查看详情

mysql主从同步与读写分离(代码片段)

...。主从复制的原理:Master,记录数据更改操作。-启动binlog日志-设置binlog日志格式-设置server_idSlave,运行2个线程。-Slave_IO:复制master主机binlog日志文件里的SQL到本机 查看详情

mysql主从同步与读写分离(代码片段)

...。主从复制的原理:Master,记录数据更改操作。-启动binlog日志-设置binlog日志格式-设置server_idSlave,运行2个线程。-Slave_IO:复制master主机binlog日志文件里的SQL到本机 查看详情

mysql主从同步与读写分离(代码片段)

...。主从复制的原理:Master,记录数据更改操作。-启动binlog日志-设置binlog日志格式-设置server_idSlave,运行2个线程。-Slave_IO:复制master主机binlog日志文件里的SQL到本机 查看详情

rocketmq消息存储原理

...存的原因在消息堆积的情况下也不会影响性能消息存储的日志数据文件CommitLog的读取会严重影响性能读取消息内容会产生较多的随机访问读取如何提升随机读性能传统的IO方式用户态空间的进程要读写磁盘文件需要经过内核空间... 查看详情

mysql数据库同步原理

...原理   为了减轻主库的压力,应该在系统应用层面做读写分离,写操作走主库,读操作走从库,下图为MySQL官网给出的主从复制的原理图,从图中可以简单的了解读写分离及主从同步的过程,分散了数据库的访问压力,提升整... 查看详情

mysql数据库同步原理

...原理   为了减轻主库的压力,应该在系统应用层面做读写分离,写操作走主库,读操作走从库,下图为MySQL官网给出的主从复制的原理图,从图中可以简单的了解读写分离及主从同步的过程,分散了数据库的访问压力,提升整... 查看详情