当前位置: 首页 > news >正文

mysql的三大日志

摘自https://blog.csdn.net/chuige2013/article/details/123027580

一. 初步认识

binlog二进制日志
redolog
undolog

二. binlog

binlog记录写入行操作

作用

1)、主从复制:在Master端开启binlog,然后将binlog发送到各个Slave端,Slave端重放binlog从而达到主从数据一致。
2)、 数据恢复:通过使用mysqlbinlog工具来恢复数据。 binlog刷盘时机
对于InnoDB存储引擎而言,只有在事务提交时才会记录biglog,此时记录还在内存中,那么biglog是什么时候刷到磁盘中的呢?mysql通过sync_binlog参数控制biglog的刷盘时机,取值范围是0-N:
0:不去强制要求,由系统自行判断何时写入磁盘; 1:每次commit的时候都要将binlog写入磁盘;
N:每N个事务,才会将binlog写入磁盘。

三、RedoLog和UndoLog

BinLog是MySQL
Server层的日志,所有的MySQL存储引擎都支持BinLog。BinLog可以支持主从复制和数据恢复,但是对事务的ACID特性支持比较差。InnoDB存储引擎引入RedoLog和UndoLog事务日志,用于提升事务场景下的数据库性能。本文会对RedoLog和UndoLog进行介绍。

一条SQL经历的步骤select * from user_info where id = 1;

连接器:客户端和MySQL服务端建立连接,用户名密码等信息校验; 查询缓存:如果SQL语句是查询语句,则查看查询语句是否命中缓存;
分析器:对SQL语句的词法和语法进行分析,判断SQL语句的类型和对应的表等信息;
优化器:对SQL语句进行优化,选择合适的索引;
执行器:在对应的MySQL引擎上执行SQL查询语句,并返回查询结果;

update user_info set name='zs' where id=1;

和查询流程不一样的是,更新流程还涉及ChangeBuffer和两个重要的日志模块:BinLog和RedoLog。其中BinLog和ChangeBuffer的作用已经在前文中介绍过,BinLog用于主从复制和数据恢复,ChangeBuffer用于缓存对数据库中数据的操作,RedoLog则是本文介绍的主角了。

四、ChangeBuffer技术

对于上文中的更新语句,如果没有RedoLog,那么InnoDB引擎会按照索引查找到id=1的用户记录,把记录加载到内存中,然后修改内存中的数据事务提交后再写回磁盘。如果数据库数据更新的频率非常低,那么这样更新方式数据库也可以接受,但是在更新非常频繁的情况下,大量的离散IO会成为数据库的瓶颈,影响数据库的性能。

在更新频繁的场景下,如何降低磁盘的IO并保证事务呢?这就涉及到我们前边文章中介绍过的ChangeBuffer技术了,在满足ChangeBuffer缓存操作的条件下,InnoDB并不会立即把数据的变更操作写入磁盘,而是将这些对数据页的操作缓存到ChangeBuffer中,数据库找合适的机会再将操作Merge到数据库中。

通过ChangeBuffer技术,我们可以把对数据库的多次离散访问合并为一次数据库访问,并且用户的更新线程中不需要实际访问磁盘,大大提升了数据库性能。

RedoLog称为重做日志,每当有操作时,在数据变更之前将操作写入RedoLog,这样当发生掉电之类的情况时系统可以在重启后继续操作;
UndoLog称为撤销日志,当一些变更执行到一半无法完成时,可以根据撤销日志恢复到变更之间的状态;
MySQL的InnoDB引擎中就使用了WAL技术,所以InnoDB存储引擎包含了RedoLog和UndoLog两部分日志。

相关文章:

mysql的三大日志

摘自https://blog.csdn.net/chuige2013/article/details/123027580 一. 初步认识 binlog二进制日志 redolog undolog 二. binlog binlog记录写入行操作 作用 1)、主从复制:在Master端开启binlog,然后将binlog发送到各个Slave端,S…...

API接口及社区电子商务化的解释

API是应用程序的开发接口,在开发程序的时候,我们有些功能可能不需要从到到位去研发,我们可以拿现有的开发出来的功能模块来使用,而这个功能模块,就叫做库(libary)。比如说:要实现数据传输的安全&#xff0c…...

[蓝帽杯 2021]One Pointer PHP

知识点&#xff1a;php 数组整型溢出&#xff0c;open_basedir 绕过分析 利用数组整型溢出绕过&#xff0c;因为PHP 会对溢出的数字处理为 float 类型。 <?php include "user.php"; if($userunserialize($_COOKIE["data"])){$count[$user->count]…...

【JAVA】xxl-job服务搭建

xxl-job服务搭建 1.下载xxl-job项目 https://github.com/xuxueli/xxl-job 2.数据库表创建 3.修改配置 注意&#xff1a;这是两个项目&#xff0c;一个是xxl-job前台&#xff0c;一个是xxl-job执行器&#xff0c;找到这两个项目得配置文件&#xff0c;修改配置。 配置文件地址…...

毕业设计 基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计

基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线设计1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2心率检测电路设计2.3 TFT2.4寸彩屏电路设计3、部分代码展示3.1 ADC初始化3.2 获取ADC采样值3.3 LCD引脚初始化3.3 在LCD指定位置显…...

【10k~30k的区别】=== 功能测试、自动化测试、性能测试的区别

按测试执行的类型来分&#xff1a;功能测试、自动化测试、性能测试 1&#xff0e;功能测试 功能测试俗称点点点测试。初级测试人员的主要测试任务就是执行测试工程师所写的测试用 例&#xff0c;记录用例的执行状态及bug情况。与开发人员进行交互直到bug被修复。 功能测试理论…...

《MySQL学习》 索引失效的三种特殊情况

一.条件字段使用函数 explain select * from bpm_proc_instance bpi where CREATED_AT > 2022-06-01 CREATED_AT 字段建立了索引&#xff0c;此时explain分析的结果表明能使用到索引 但如果我们对 CREATED_AT 字段使用函数 explain select * from bpm_proc_instance bpi w…...

wafw00f 防火墙探测

kali机器自带防火墙探测工具wafw00&#xff0c;它可以通过发送正常以及不正常甚至包含恶意代码的HTTP请求&#xff0c;来探测网站是否存在防火墙&#xff0c;并识别防火墙的厂商及类型。安装&#xff1a;git clone https://github.com/EnableSecurity/wafw00f.git python setup…...

MySQL学习(1)[参考书籍:mysql是怎么运行的]

目录 一、mysql设计模式和技术 二、mysql服务器和客户端 启动mysql服务 启动mysql客户端程序 三、mysql存储引擎 四、mysql配置 五、mysql系统变量 六、mysql字符集 编码和解码&#xff1a; 常见字符集&#xff08;五种&#xff09;&#xff1a; 相关概念&#xff1…...

用Python制作邮件检测器

github地址&#xff1a; https://github.com/CaLlMeErIC/MailDetective 因为需求需要写一个简单的邮件检测系统的框架&#xff0c;这里记录下思路 首先第一反应,这个检测系统不应该是各个邮件收件系统都有自带的吗&#xff0c;于是搜索了下是否有相关的邮件检测开源软件&#…...

K8S---pod基础概念

目录 一、资源限制 二、Pod 的两种使用方式 三、Pod 资源共享 四、底层容器Pause 1、Pause共享资源 1.1 网络 1.2 存储 1.3 小结 2、Pause主要功能 3、Pod 与 Pause 结构的设计初衷 五、Pod容器的分类 1、基础容器&#xff08;infrastructure container&#xff09;…...

激活函数入门学习

本篇文章从外行工科的角度尽量详细剖析激活函数&#xff0c;希望不吝指教&#xff01; 学习过程如下&#xff0c;先知道这个东西是什么&#xff0c;有什么用处&#xff0c;以及怎么使用它&#xff1a; 1. 为什么使用激活函数 2. 激活函数总类及优缺点 3. 如何选择激活函数 …...

小文智能结合ChatGPT的产业未来

最近几个月&#xff0c;由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT在国内外各大平台掀起了一阵AI狂潮。短短几天时间&#xff0c;其用户量就突破了百万大关&#xff0c;注册用户之多一度导致服务器爆满。 继AI画图之后&#xff0c;ChatGPT成为了新的顶流&#xf…...

Linux-编写一个自己的命令

前言&#xff08;1&#xff09;在Linux中&#xff0c;我们对文件路径进行操作都需要输入命令。那么&#xff0c;有人可能就会有疑惑了&#xff0c;命令是什么东西&#xff1f;我们是否也可以创造出自己的命令呢&#xff1f;答案是可以的。命令本身其实就是可执行文件。但是与普…...

Nacos架构篇 - Distro协议

Distro 它是 Nacos 社区自研的一种 AP 分布式协议&#xff08;也是最终一致性协议&#xff09;。它面向临时实例&#xff0c;保证了在某些 Nacos 节点宕机后&#xff0c;整个临时实例处理系统依旧可以正常工作。作为一种有状态的中间件应用的内嵌协议&#xff0c;Distro 保证了…...

和月薪3W的聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 我了解了下他的面试过程&#xff0c;就一点&#xff0c;不管是阿里还是腾讯的面试&#xff0c;这个级别的程序员&#xff0c;都会考察项目管理能力&#xff0c;并且权重…...

关于Ubuntu18.04 root账户登录的问题

关于Ubuntu18.04 root账户登录的问题一、 Ubuntu 18.04添加root用户登录1. 设置root用户2. 修改/root/.profile3. 修改/etc/pam.d目录下的gdm-autologin和gdm-password4. 修改50-ubuntu.conf5. 登录root账户二、Ubuntu18.04不能远程使用root账户登录的问题1. 修改sshd_config2.…...

基于jeecgboot的flowable的H5版本在演示系统发布

目前在NBCIO 亿事达企业管理平台上发布了H5的在线演示系统&#xff0c;欢迎大家批评指正。 在nbcio-vue nbcio-vue: NBCIO 亿事达企业管理平台前端代码&#xff0c;基于ant-design-vue-jeecg的前端版本&#xff1a; 3.0.0代码和和flowable6.7.2&#xff0c;初步完成了集流程设…...

【代码训练营】day44 | 完全背包理论 518. 零钱兑换 II 377. 组合总和 Ⅳ

所用代码 java 完全背包 01背包物品只能使用一次 – 倒序遍历 for(i 0; i < weight.length; i){ 物品for (j bagWeight; j > weight[i]; j--){ 背包dp[j] max(dp[j], dp[j-weight[i]] value[i])} }完全背包物品可以使用无限次 – 正序遍历 for(i 0; i < weigh…...

ICA简介:独立成分分析

1. 简介 您是否曾经遇到过这样一种情况&#xff1a;您试图分析一个复杂且高度相关的数据集&#xff0c;却对信息量感到不知所措&#xff1f;这就是独立成分分析 (ICA) 的用武之地。ICA 是数据分析领域的一项强大技术&#xff0c;可让您分离和识别多元数据集中的底层独立来源。 …...

QCustomPlot之颜色图实战:从静态数据到动态刷新的可视化(十四)

1. 认识QCPColorMap&#xff1a;从静态热力图开始 第一次接触QCustomPlot的颜色图功能时&#xff0c;我正需要可视化一组服务器CPU温度分布数据。当时尝试了多种图表类型&#xff0c;最终发现QCPColorMap简直是二维矩阵数据可视化的"神器"。这个类专门用于绘制热力图…...

HEIF Utility:Windows平台HEIF格式兼容性完整解决方案实战

HEIF Utility&#xff1a;Windows平台HEIF格式兼容性完整解决方案实战 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 对于使用iPhone或iPad的Windows用户而言&a…...

从无人机到平衡车:MPU6050姿态融合(互补滤波)的实战调参指南与避坑心得

从无人机到平衡车&#xff1a;MPU6050姿态融合实战调参与避坑指南 姿态解算在无人机飞控、平衡车和机器人系统中扮演着核心角色。MPU6050作为一款集成了三轴陀螺仪和三轴加速度计的惯性测量单元(IMU)&#xff0c;其数据融合质量直接决定了系统稳定性。许多开发者虽然理解了互补…...

Windows系统mqad.dll文件丢失无法启动程序解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

OpenClaw 汉化版 Windows 一键安装指南|零基础 5 分钟部署 告别命令行

前言 在本地部署 AI 智能体时&#xff0c;英文界面晦涩、命令行操作复杂、环境配置繁琐&#xff0c;是很多零基础用户的三大痛点。OpenClaw 汉化中文版专为国内用户优化&#xff0c;采用全中文图形化界面 免环境配置 一键部署设计&#xff0c;全程无任何命令行操作&#xff…...

5分钟掌握暗黑破坏神2存档编辑:免费Web工具完整指南

5分钟掌握暗黑破坏神2存档编辑&#xff1a;免费Web工具完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗&#xff1f;想快速体验不同职业的build却不想从头练级&#xff1f;d2s-ed…...

MySQL 如何正确实现“随机采样”

在开发英语学习或社交应用时&#xff0c;随机展示单词或消息是一个高频需求。然而&#xff0c;看似简单的“随机”逻辑&#xff0c;如果实现方式不当&#xff0c;会随着数据量的增长演变为系统瓶颈 。 1. 性能陷阱&#xff1a;order by rand() 最直观的写法是 select word from…...

别再到处找靶场了!一个OWASP BWA虚拟机搞定30+个Web漏洞环境(附SSH连接与MySQL密码修改指南)

OWASP BWA&#xff1a;一站式Web安全实战环境的终极解决方案 对于Web安全初学者和爱好者来说&#xff0c;寻找合适的漏洞靶场往往比学习技术本身更令人头疼。你是否也曾在不同平台间反复切换&#xff0c;下载各种零散的虚拟机镜像&#xff0c;只为练习一个简单的SQL注入或XSS漏…...

爱普生SG-8201CJ石英可编程振荡器:精准频率控制专家首选

在电子设计中&#xff0c;晶振的选择往往是决定系统性能的关键因素之一。特别是在需要高精度和稳定性的应用中&#xff0c;选择一款合适的晶振尤为重要。今天&#xff0c;我们就来聊聊爱普生&#xff08;Epson&#xff09;的SG-8201CJ石英可编程振荡器&#xff0c;看看它如何成…...

开源图表实时编辑器:从代码到可视化的无缝创作解决方案

开源图表实时编辑器&#xff1a;从代码到可视化的无缝创作解决方案 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edito…...