Redis__三大日志

news2024/12/27 12:19:15

文章目录

😊 @ 作者:Lion J
💖 @ 主页: https://blog.csdn.net/weixin_69252724
🎉 @ 主题:Redis__三大日志
⏱️ @ 创作时间:2024年04月30日
————————————————

对于MySQL来说, 有三种类型的日志, Binlog、Undolog、Redolog

Undo Log

字面意思可以很容易的知道, 就是撤销日志的意思, 他的作用主要是将MySQL中的数据回到某个状态

Undo Log什么时候用到

  • 在每一个事务开始之前, MySQL 会将待修改的记录保存在Undo Log 中, 如果数据库崩溃或事务需要回滚时, MySQL就可以通过Undo Log日志, 将数据回滚到之前的状态

  • 在MySQL新增、修改、删除数据的时候, 在事务开始之前, 就会将数据写入到Undo Log 中. 事务在提交的时候, 并不会立刻删除Undo Log, InnoDB存储引擎 会对事务对应的Undo Log放入到待删除的列表中, 之后就通过后天的线程对删除列表进行删除处理.

注意Undo Log实际是一种逻辑日志, 记录的是一个变化的过程.
就比如:SQL执行一个操作, delete操作, 那么Undo Log日志就会记录一个insert 操作; MySQL 执行一个 insert 操作, Undo Log就会生成一个delete记录;
意思就总和你对着干, 它会生成和你操作相反的日志记录

Undo Log的作用

Undo Log 对于MySQL实现事务来说, 起着至关重要的作用, 它实现了事务的原子性 和 多版本并发控制, --> MVCC

  • 实现事务原子性
    Undo Log 能够实现MySQL事务的原子性, 在事务的处理过程中, 如果MySQL出现了错误或者我想执行事务的回滚操作(执行rollback操作), MySQL可以利用Undo Log日志将数据库的数据恢复到之前的状态

  • 实现MVCC机制
    上面说了,在事务开始之前, MySQL会将要修改的数据放到Undo Log中, MySQL可以利用此时的旧版本数据副本或者快照以便让其他并发事务进行读取

举个例子
在这里插入图片描述

首先事务A在更新 id=1 的数据之前, 会将数据保存到Undo Buffer 中. 事务A没有提交之前, 此时如果事务B 开始, 需要查询id =1 的数据, 那么就从Undo Log 数据 中的快照数据进行一个返回,
Undo Buffer 就是一个 日志缓冲池, 定期将日志数据写入到磁盘中, 减少每次修改需要和磁盘进行IO操作

Redo Log

redo log 听名字就能看出来, 它是个重做日志, 指的是在数据库发生意外情况, 或者宕机, 操作造成数据丢失情况的时候, 可以重新执行某操作. 在MySQL中, 事务中修改任何数据, 都会将最新的数据写入到Redo Log中进行备份
–> (保险日志)

在MySQL中,随着事务操作的执行,就会产生Redo Log日志,在事务提交时会产生Redo Log并将其写入Redo Buffer,Redo Buffer也并不是随着事务的提交就会被立刻写入到磁盘中,而是等事务操作的脏页写入到磁盘之后,Redo Log的使命也就完成了,此时,Redo Log日志占用的空间可以重新利用,会被后续产生的Redo Log日志覆盖
脏页: 就是在内存中修改 但是没有返回磁盘的数据

Redo Log 原理

Redo Log 能够实现事务的持久性, 防止发生故障的时间点, 恰好有脏页未写入表的ibd文件中; 那么在下一次重启MySQL的时候, 就会根据Redo Log 来进行重做, 从而将未提交的事务进行持久化

Redo Log的写机制

Redo Log文件的内容是以顺序循环的方式写入文件的,写满时就会回到第一个文件,进行覆盖, 类型于循环链表

在这里插入图片描述

  • Write Pos 是当前记录的位置,一边写一边后移,写到最后一个文件末尾后就回到 0 号文件开头;
  • CheckPoint是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数 据文件;

图这就是一个重做文件组, 有四个重做日志文件

Binlog

Binlog记录所有MySQL数据库表结构变更以及表数据修改的二进制日志,不会记录select和show这类查询操作的日志。Binlog日志是以事件形式记录,还包含语句所执行的消耗时间。开启Binlog日志有以下两个最重要的使用场景。

使用主要有一下两个功能:

  • 主从复制:在主库里面开启binlog功能, 这样就可以把binlog传递给库, 从库拿到binlog后实现数据恢复,达到主从一致性
  • 数据恢复: 可以通过mysqlbinlog共聚来恢复数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1640733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

政安晨:【Keras机器学习示例演绎】(三十)—— 使用变换器进行视频分类

目录 数据收集 设置 定义超参数 数据准备 构建基于变换器的模型 培训的效用函数 模型训练和推理 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的博客能够对您有所裨益,如有不…

C语言/数据结构——每日一题(环形链表的约瑟夫问题)

一.前言 今天在牛客网上面看到了一道环形链表题,想着和大家们分享一下。可能我有点笨,那道题的链接我没搞好,所以很抱歉,只能麻烦大家们看一下截屏的题目信息了。废话不多数,让我们开始今天的题目分享吧。 二.正文 …

论文笔记(四十五)Attention Is All You Need

Attention Is All You Need 文章概括摘要1. 介绍2. 背景3. 模型架构3.1 编码器和解码器堆栈3.2 Attention3.2.1 按比例点积Attention3.2.2 Multi-Head Attention3.2.3 注意力在模型中的应用 3.3 定位前馈网络3.4 嵌入与 Softmax3.5 位置编码 4 为什么 Self-Attention5. Trainin…

手撕vector的模拟实现

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Python梯度提升决策树库之lightgbm使用详解

概要 LightGBM是一个快速、分布式、高性能的梯度提升决策树(Gradient Boosting Decision Tree)库,它在机器学习和数据挖掘领域被广泛应用。本文将介绍LightGBM库的安装方法、主要特性、基本功能、高级功能、以及在实际应用中的场景和总结。 安装 首先,需要安装LightGBM库…

【doghead】ubuntu构建libuv

按照官方的文档2024年3月的版本。首先构建libuv 最终构建的还得了test 构建过程 zhangbin@DESKTOP-1723CM1:/mnt/d/XTRANS/thunderbolt/ayame/zhb-bifrost$ ls Bifrost-202403 README.md draw player-only worker 大神的带宽估计.png zhangbin@DESKTOP-1723CM1:/mnt/d/XTRANS/…

python学习笔记B-20:序列实战--处理千年虫

将2位数表达的年份,转换为用4位数表达: print("将列表中的2位数年份转换为4位数年份") lst[88,89,90,00,99] print(lst) for index in range(len(lst)):if len(str(lst[index]))2:lst[index] 1900int(lst[index])elif len(str(lst[index]))1…

AI学习指南-人工智能概述

欢迎来到人工智能的奇妙世界!如果你是初学者,那么你来对地方了。今天,我们将一起探索人工智能(AI)的基本概念,看看它是如何分类的,它的应用有哪些,以及未来可能的发展方向。准备好了…

7个策略,让你的可视化大屏打动人心!

要打动人心的可视化大屏,可以采取以下策略: 引人入目的设计: 选择鲜明而吸引人的颜色和视觉效果,使用引人注目的动画和过渡效果,以及吸引眼球的图形和图案设计。通过精心设计的布局和排版,确保信息清晰可…

vivado Aurora 8B/10B IP核(9)- CRC、 Aurora 8B/10B内核的时钟接口端口

CRC 模块提供 16 位或 32 位 CRC,用于用户数据。 Aurora 8B/10B 内核的时钟接口端口 从相邻收发器四边形的时钟Xilinx 实现工具可以根据需要对南北路由和引脚交换到收发器时钟输入进行必要的调整,以将时钟从一个四线到另一个。 重要信息:共…

HTML5实用大全(Part.2)

引言: 哈喽,各位小伙伴们大家好呀,学习了上一篇关于HTML5的文章后,你是否对于入门HTML5有了一定的基础了呢,本篇博客我们将继续学习HTML5的不同标签,跟上队伍,准备出发咯! 1.标签之…

RMQ从入门到精通

一.概述与安装 //RabbitMQ //1.核心部分-高级部分-集群部分 //2.什么是MQ 消息队列message queue 先入先出原则;消息通信服务 //3.MQ的大三功能 流量消峰 应用解耦 消息中间件 //(1)人-订单系统(1万次/S)—> 人 - MQ(流量消峰,对访问人员进行排队) -…

Qt_介绍_环境安装_创建新项目_实现helloworld_坐标_1

文章目录 一、Qt是什么二、Qt的发展史三、Qt支持的平台四、Qt版本五、Qt的优点六、Qt的应用场景七、Qt开发环境,需要按照3个部分1.C编译器(gcc,cl.exe....不是Visual Studio)2.Qt SDK3.需要有一个Qt的集成开发环境(IDE&#xff09…

云服务器+ASF实现全天挂卡挂时长

目录 前言正文1.安装下载2.编辑配置文件3.设置Steam社区证书4.启动ASF5.给游戏挂时长6.进阶-ASF自动启动且后台保活 前言 我遇到的最大的问题是,网络问题 其实不然,各大厂商的云服务器后台都有流量监控,意味着依靠一般方法是不能正常访问St…

最新可商用级chatgpt4.0系统源码+Midjourney-AI绘画系统 集成国内外数十个AI大模型和绘画接口

随着科技的飞速发展,人工智能正在逐步改变我们的生活,特别是在艺术创作领域。分享一款最新可商用级ChatGPT 4.0系统源码与Midjourney AI绘画系统的完美结合,集成国内外数十个AI大模型与绘画接口,为创作者们带来了前所未有的智能创…

DS:链表的分类

欢迎来到Harper.Lee的学习世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦! 链表的结构⾮常多样,以下情况组合起来就有8种(2 * 2 * 2)链表结构。下面我们依次来认识它们吧&am…

centos7安装真的Redmine-5.1.2+ruby-3.0.0

下载redmine-5.1.2.tar.gz,上传到/usr/local/目录下 cd /usr/local/ tar -zxf redmine-5.1.2.tar.gz cd redmine-5.1.2 cp config/database.yml.example config/database.yml 配置数据连接 #编辑配置文件 vi config/database.yml #修改后的内容如下 product…

如何基于nginx组建多个子目录网站

华子目录 实验要求实验步骤 实验要求 组建多个子目录网站www.openlab.com,该网站有2个子目录www.openlab.com/sxhkt和www.openlab.com/zywww.openlab.com/sxhkt使用http读取www.openlab.com/zy使用https读取 实验步骤 准备工作 [rootserver ~]# setenforce 0[ro…

深度学习之基于YOLOv5的山羊行为识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习之基于YOLOv5的山羊行为识别系统是一个创新的项目,旨在通过深度学习和目标检测技术&#xff0c…

Nginx三大功能详解

文章目录 Nginx(动静分离)1.基本介绍2.需求分析3.思路分析4.先使用传统的方式1.配置win的tomcat1.webapps\search\cal.jsp2.webapps\search\image\cal.jpg3.启动tomcat,访问 http://192.168.200.1:8080/search/cal.jsp 2.配置linux的tomcat1.…