mysql:31mysql数据库的日志顺序读写以及数据文件随机读写的原理

鮀城小帅 鮀城小帅     2022-12-18     796

关键词:

1.MySQL数据库和底层的操作系统之间的交互原理

MySQL在实际工作时候的两种数据读写机制,一种是对 redo log、binlog这种日志进行的磁盘顺序读写,一种是对表空间的磁盘文件里的数据页进行的磁盘随机读写。

2.磁盘随机读写操作

磁盘随机读操作

MySQL在工作的时候,尤其是执行增删改操作的时候,肯定会先从表空间的磁盘文件里读取数据页出来,这个过程就是典型的磁盘随机读操作

在上图中,有一个磁盘文件,里面有很多的数据页,因为要读取的这个数据页可能在磁盘的任意一个位置,所以在读取磁盘里的数据页的时候只能用随机读的方式。这就是磁盘随机读

磁盘随机读的性能问题

磁盘随机读的性能是比较差的,所以不可能每次更新数据都进行磁盘随机读,必须是读取一个数据页之后放到Buffer Pool的缓存里去,下次要更新的时候直接更新Buffer Pool里的缓存页。

频繁随机读写造成的性能问题 -- IOPS、响应延迟

所谓IOPS,就是底层的存储系统每秒可以执行多少次的磁盘读写操作,比如底层磁盘支持每秒执行1000个磁盘随机读写操作和每秒200个磁盘随机读写操作,对数据库的性能影响是非常大的。

IOPS指标对数据库的CRUD操作的QPS影响是非常大的,它几乎决定了数据库每秒能执行多少SQL语句,底层存储的IOPS越高,数据库的并发能力就越高。

磁盘随机读写的响应延迟,也会对数据库的性能造成很大的影响。假设底层磁盘支持每秒执行200个随机读写操作,那么每个操作是耗费10ms完成,还是耗费1ms完成,这 在一定程度上决定了数据库执行的单个CRUD SQL语句的性能。

一般对于核心业务的数据库的生产环境机器规划,都是推荐使用SSD固态硬盘的,而不是机械硬盘,因为SSD固态硬盘的随机读写并发能力和响应延迟要比机械硬盘好的多,可以大幅度提升数据库的QPS和性能。

3.磁盘顺序读写

磁盘顺序读写,在Buffer Pool的缓存页里更新了数据之后,必须要写一条redo log日志,这条 redo log 日志,就是走的顺序写。

所谓顺序写,就是说在一个磁盘日志文件里,一直在末尾追加日志。

如上图所示,写redo log日志的时候,其实是不断的在一个日志文件末尾追加日志的,这就是磁盘顺序写

磁盘顺序写的性能几乎跟内存随机读写的性能差不多,并且在数据库里用了os cache机制,redo log顺序写入磁盘之前,先是进入 os cache,也就是操作系统的内存缓存里。

对写磁盘日志文件来说,磁盘每秒读写多少数据量的吞吐量指标,也就是说每秒可以写入磁盘100MB数据和写入磁盘200MB数据,对数据库的并发能力影响很大。

4.总结

数据库的每一次更新SQL语句,会涉及到多个磁盘随机读取数据页的操作,也会涉及到一条 redo log日志文件顺序写的操作。所以磁盘读写的IOPS指标,就是每秒可以执行多少个随机读写操作,以及每秒可以读写磁盘的数据量的吞吐量指标,就是每秒可以写入多少 redo log 日志,整体决定了数据库的并发能力和性能。

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

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

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

...二进制日志保存用户对Mysql数据的操作。   从数据库监听主MySQL日志变化,发现更新复制日志到本地,读取复制到本地的日志,执行日志对数据库的操作,保证主和从数据库状态和数据的一致性,防止主数据库故障数据丢失&nb... 查看详情

mysql:30阶段总结:mysql存储模型以及数据读写机制

目前为止,初步学了MySQL存储模型以及对应的读写机制。可以知道的是MySQL的数据最终是放在磁盘文件里的。而数据在存储到磁盘文件的机制中,在逻辑层面是将数据插入一个一个的表中的;而在物理层面上,表对... 查看详情

mysql数据库mysql主从复制和sharding-jdbc实现读写分离(代码片段)

...1.MySQL主从复制1.1MySQL主从复制介绍1.2MySQL主从复制配置2.数据库读写分离2.1读写分离介绍2.2Sharding-JDBC2.2.1Sharding-JDBC介绍2.2.2Sharding-JDBC实现读写分离1.MySQL主从复制1.1MySQL主从复制介绍MySQL主从复制是一个异步的复制过程,底层是... 查看详情

springboot项目中实现mysql读写分离

...但我们仔细观察我们会发现,当我们的项目都是用的单体数据库时,那么就可能会存在如下问题:为了解决上述提到的两个问题,我们可以准备两(多)台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更(写、更新... 查看详情

mysql主从复制和读写分离

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

github标星过万!mysql绝对值

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

mysql的读写分离主从延时问题(代码片段)

...库上去。MySQL主从复制原理的是啥?主库将变更写入binlog日志,然后从库连接到主库之后,从库有一个IO线程,将主库的binlog日志拷贝到自己本地,写入一个relay中继日志中。接着从库中有一个SQL线程会从中继日志读取binlog,然后 查看详情

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到本机 查看详情

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

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

mysql主从复制,读写分离

...复制,读写分离配置-主库Master第一步:修改MySQL数据库的配置文件/etc/my.cnf[mysqld]log-bin=mysql-bin#[必须]启用二进制日志server-id=100#[必须]服务器唯一id第二步:重启mysql服务systemctlrestartmysqlId第三步:登录MySQL数据库&#x... 查看详情

mysql主从复制,读写分离

...复制,读写分离配置-主库Master第一步:修改MySQL数据库的配置文件/etc/my.cnf[mysqld]log-bin=mysql-bin#[必须]启用二进制日志server-id=100#[必须]服务器唯一id第二步:重启mysql服务systemctlrestartmysqlId第三步:登录MySQL数据库&#x... 查看详情

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

...二进制日志同步至自己中继日志从服务器重放中继日志到数据库中客户端读,则代理服务器直接访问从服务器降低负载,起到负载均衡作用systemctlstopfirewa 查看详情

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

...分离,两个slave读负载均衡4、修改amoeba主配置文件和数据库文件5、开启amoeba6 查看详情

mysql主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)(代码片段)

文章目录一、MySQL主从复制的理论部分1.1、主从复制与读写分离的概述1.2、mysql支持的复制类型1.3、主从复制的工作过程(主写从复制❤❤❤❤)1.4、MySOL主从复制延迟的原因二、MySQL读写分离的理论部分2.1、MySQL读写分离... 查看详情

mysql主从复制以及读写分离(❤❤❤❤含理论和实验❤❤❤❤大家中秋快乐!㊗)(代码片段)

文章目录一、MySQL主从复制的理论部分1.1、主从复制与读写分离的概述1.2、mysql支持的复制类型1.3、主从复制的工作过程(主写从复制❤❤❤❤)1.4、MySOL主从复制延迟的原因二、MySQL读写分离的理论部分2.1、MySQL读写分离... 查看详情