营销MM让我讲MySQL日志顺序读写及数据文件随机读写原理
摘要:你知道吗,MySQL在实际工作时候的两种数据读写机制?
本文分享自华为云社区《MySQL日志顺序读写及数据文件随机读写原理》,作者:JavaEdge 。
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日志文件顺序写操作
营销MM让我讲MySQL日志顺序读写及数据文件随机读写原理的更多相关文章
- mysql数据库存储路径更改 数据文件位置
使用了VPS一段时间之后发现磁盘空间快满了.本人的VPS在购买的时候买了500gb的磁盘,提供商赠送了20GB的高性能系统磁盘.这样系统就有两个磁盘空间了.在初次安装mysql 的时候将数据库目录安装 ...
- Mysql LOAD DATA读取客户端任意文件漏洞复现(原理分析)
环境搭建 怎么设置Mysql支持外联? use mysql; grant all privileges on *.* to root@'%' identified by '密码'; //授权语句 fl ...
- 原!!mysql,几十万条数据中随机抽取1万以内的数据
想了几种方法: 1.将所有符合条件的对象集合都查出来,在代码里做随机. 2.先查出所有符合条件的id,再代码随机需要抽查数量的id,再 到数据库 中 in. 3.利用order by rand() l ...
- od中低位地址和高位的顺序,以及数据的存放读写
在观察内存的时候应当注意"内存数据"与"数值数据"的区别. 在我们的调试环境中,内存由低到高分布,你可以简单地把这种情形理解成Win32系统在内存中由地位向高位 ...
- MySQL 日志的类型
日志文件对于一个服务器来说是非常重要的,它记录着服务器的运行信息,许多操作都会写日到日志文件,通过日志文件可以监视服务器的运行状态及查看服务器的性能,还能对服务器进行排错与故障处理,MySQl中有六种 ...
- 浅谈MySQL日志文件|手撕MySQL|对线面试官
关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 上周五面试了字节的第三面,深感数据库知识的重要,我也意识到在平时的学习中,自己对于数据库的学习较为薄弱.甚至在有过一定实习经验之后,依旧因为 ...
- 电商网站垮IDC数据备份,MySql主从同步,图片及其它数据文件的同步
原文网址:http://www.bzfshop.net/article/180.html 对一个电子商务网站而言,最宝贵的资源就是数据.服务器是很廉价的东西,即使烧了好几个也问题不大,但是用户数据如果 ...
- MySQL的奇怪的删表数据文件而表照样能打开
MySQL的奇怪的删表数据文件而表照样能打开 author:headsen chen 2017-11-02 17:57:17 现象:删除一个正在运行的mysql数据库的表的数据文件:* ...
- MySQL 日志管理详解
大纲 一.日志分类 二.日志详解 注:MySQL版本,Mysql-5.5.32(不同版本的mysql变量有所不同) 一.日志分类 错误日志 查询日志 慢查询日志 二进制日志 中继日志 事务日志 滚动日 ...
随机推荐
- 【操作系统】编程模拟FIFO,LRU,NUR,OPT页面置换算法
#include<stdio.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x) ...
- 元宇宙(metaverse)中文社区-工程实践
欢迎访问元宇宙中文社区,在这里大家可以提问,回答,分享,诉说,一起构建一个元宇宙社区. 2021年"元宇宙"的这个词的火热程度在业内绝对不亚于疫情,趁着这个热度,本文记录了如何搭建 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
- 美和易思 - JAVA开发&移动互联网 阶段性教学效果检测考试机试试题【题目:维护洗衣店消费项数据】
一. 语言和环境 1. 实现语言:Java 语言. 2. 环境要求:Eclipse 或 Myeclipse+MySQL. 二. 功能需求 利用 Java Swing 和 JDBC 技术维护洗衣店消费项 ...
- Unity——ShaderLab基础
1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在in ...
- windows 安装GCC
1. 下载GCC执行文件 https://pan.baidu.com/s/1foOeAo29gLr_8HhTo_69pA 提取码 cs93 2. 解压文件到D:\mingw64 3. 新建系统环境变 ...
- Python 利用@property装饰器和property()方法将一个方法变成属性调用
在创建实例属性时,如果直接把实例属性暴露出去,虽然写起来简单,但是存在一些风险,比如实例属性可以在外部被修改. 为了限制外部操作,可以通过一个set_score()方法来设置成绩,再通过一个get_s ...
- mysql 的 limit 与sql server 的 top n
1.东西学多了,难免会混淆 貌似没有错,但是mysql不支持 top n 语法 而是使用 limit n 或 limit n , m 2. top n 语法 是SQL server 的
- PPT文档学习小练习链接
1. <初识PPT2010> https://www.toutiao.com/i6486689592241029645/ 2. <PowerPoint2010实现折线图动态展示> ...
- HIVE优化学习笔记
概述 之前写过关于hive的已经有两篇随笔了,但是作者依然还是一枚小白,现在把那些杂七杂八的总结一下,供以后查阅和总结.今天的文章介绍一下hive的优化.hive是好多公司都在使用的东西,也有好多大公 ...