Redis__三大日志

文章目录

😊 @ 作者: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.xdnf.cn/news/1410948.html

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

相关文章

39 死锁

目录 1.死锁 2.线程同步 3.条件变量 4.案例 死锁 概念 死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所占用不会释放的资源而处于的一种永久等待状态 四个必要条件 互斥条件:一个资源每次只能被一个执行流使用 请求…

LeetCode题练习与总结:柱状图中最大的矩形--84

一、题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释&#xff1a…

硬盘选购指南

转载请注明出处! author karrysmile date 2024年5月3日19:10:52 结论 先给用途分类和价格表 前置知识 没有不好的品牌,只有不好的系列。不用认准哪个品牌就不好,认准口碑好,稳定性好的系列买。(杂牌别买&#xff0…

82、动态规划-杨辉三角

思路&#xff1a; 本题其实很容易看出来&#xff0c;首尾都是1&#xff0c;然后第2个元素就是上一行的第一个元素和第二个元素之和。依次类推。可以得出结论&#xff1a;dp[i][j]dp[i-1][j-1]dp[i-1][j],当然要去掉首尾元素。代码如下&#xff1a; public static List<List&…

AtCoder Beginner Contest 351 C题

C - Merge the balls Time Limit: 2 sec / Memory Limit: 1024 MB Score 250 points Problem Statement You have an empty sequence and &#x1d441;N balls. The size of the &#x1d456;i-th ball (1≤&#x1d456;≤&#x1d441;) is ​2^A[i] You will perform…

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理&#xff0c;具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题&#xff0c;之后怎么提权&#xff0c;控制后面再说 背景 只有win7有网&#xff0c;其…

Day01-zabbix监控详解

Day01-zabbix监控详解 一、什么是监控&#xff0c;为什么需要监控1.1 监控概述1.2 监控课程大纲 二、Linux的那些独孤九剑级别的命令五、监控的现代时六、Zabbix监控架构6.1 生命周期6.2 Zabbix监控架构 七、Zabbix 6.x Centos7 生产快速实践指南7.1 主机规划1&#xff09; 推荐…

23- ESP32 红外遥控 (RMT)

ESP32 IDF库中的RMT驱动 RMT&#xff08;Remote Control Module&#xff09;驱动是ESP-IDF库中的一个重要组成部分&#xff0c;它主要用于处理远程控制编码和解码。 红外遥控器介绍 一、红外遥控技术介绍 红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&…

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来&#xff0c;人们已经进入了信息时代&#xff0c;也有人称为数字化时代。数在数字化的网络环境下&#xff0c;学生希望得到个性化的满足&#xff0c;根据自己的情况进行学习&#xff0c;同时也希望能够得到科学的评价&#xff0c…

【深度学习】第一门课 神经网络和深度学习 Week 3 浅层神经网络

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;深度学习 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对…

Kelpa-小型服务器开发框架分享

分享我的服务器开发框架--Kelpa&#xff1a; 这是一个由现代C编写的小型、学习性质的服务器框架&#xff0c;包含压缩&#xff0c;序列化&#xff0c;IO调度&#xff0c;Socket封装&#xff0c;文件配置&#xff0c;日志库等多个完整自研模块&#xff1a; 项目目前仍处于开发阶…

QT:输入类控件的使用

LineEdit 录入个人信息 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QString>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化输入框ui->lineEdit…

文本嵌入的隐私风险:从嵌入向量重建原始文本的探索

随着大型语言模型&#xff08;LLMs&#xff09;的广泛应用&#xff0c;文本嵌入技术在语义相似性编码、搜索、聚类和分类等方面发挥着重要作用。然而&#xff0c;文本嵌入所蕴含的隐私风险尚未得到充分探讨。研究提出了一种控制生成的方法&#xff0c;通过迭代修正和重新嵌入文…

嵌入式硬件中PCB走线与过孔的电流承载能力分析

简介 使用FR4敷铜板PCBA上各个器件之间的电气连接是通过其各层敷着的铜箔走线和过孔来实现的。 由于不同产品、不同模块电流大小不同,为实现各个功能,设计人员需要知道所设计的走线和过孔能否承载相应的电流,以实现产品的功能,防止过流时产品烧毁。 文中介绍设计和测试FR4敷…

【探索】文字游侠AI新时代,每天5分钟自动化创作图文月入1万+,十分适合新手小白,附上渠道和教程(全面)

在这个信息爆炸的时代&#xff0c;内容创作者面临着空前的竞争。为了在今日头条这样的平台上脱颖而出并获取稳定收入&#xff0c;他们需要找到更高效、更创新的方法。而今&#xff0c;一款全新的AI工具正引领着一场革命&#xff0c;彻底改变了内容创作的生态。 自从GPT问世以来…

Quad SPI的DLP优化原理

1 前言 1.1 Quad SPI Flash QSPI的I/O接口如图1所示&#xff0c;其中&#xff1a; ① CS&#xff1a;片选信号&#xff0c;低电平有效&#xff08;FLASH被选中&#xff09;&#xff1b; ② CK&#xff1a;时钟信号&#xff0c;由主设备产生&#xff1b; ③ SI/SO&#xff1a; …

开源的 RAG 和 workflow 技术对比调研

一、先来了解一下开源的技术有哪些&#xff0c;怎么样 我自己就是做RAG工作的&#xff0c;但是还是想关注一下开源的技术做到了什么程度。 所以调研了很长时间&#xff0c;也体验了一下。这里写一篇文章来分享一下结果。 我用五一的假期时间&#xff0c;来做调研&#xff0c;看…

扩展学习|本体研究进展

文献来源&#xff1a; 王向前,张宝隆,李慧宗.本体研究综述[J].情报杂志,2016,35(06):163-170. 一、本体的定义 本体概念被引入人工智能、知识工程等领域后被赋予了新的含义。然而不同的专家学者对本体的理解不同,所给出的定义也有所差异。 人工智能领域的学者Neches(1991)等人对…

常用AI工具分享 + IDEA内使用通义灵码

引言 随着人工智能技术的飞速发展&#xff0c;AI工具已经渗透到我们日常生活和工作的各个领域&#xff0c;带来了前所未有的便利。现在我将分享一下常用的AI工具&#xff0c;以及介绍如何在IDEA中使用通义灵码。 常用AI工具 1. 通义灵码 (TONGYI Lingma) - 由阿里云开发的智能…

时间复杂度空间复杂度 力扣:转轮数组,消失的数字

1. 算法效率 如何衡量一个算法的好坏&#xff1f;一般是从时间和空间的维度来讨论复杂度&#xff0c;但是现在由于计算机行业发展迅速&#xff0c;所以现在并不怎么在乎空间复杂度了下面例子中&#xff0c;斐波那契看上去很简洁&#xff0c;但是复杂度未必如此 long long Fib…