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

MySQL篇:日志

前言

MySQL中常见的日志:

  1. 重做日志(Redo Log)
    用途: 保证事务的持久性,记录事务对数据库所做的所有修改。
    内容: 记录事务对数据页的物理修改,而不是逻辑修改。
    配置: 配置文件中设置 innodb_log_group_home_dir 和 innodb_log_files_in_group 参数。

  2. 撤销日志(Undo Log)
    用途: 保证事务的原子性,用于事务的回滚和 MVCC 实现。
    内容: 记录事务对数据页的逻辑修改,以支持事务的回滚。
    配置: 通常无需人工配置,由存储引擎自动管理。

  3. 二进制日志 (Binary Log): 

        用途:记录对数据库的修改操作,用于主从复制,点播恢复等

        内容:记录了对数据库执行的所有修改操作的语句或者原始二进制数据。

        配置:通过配置文件或动态设置 log_bin 参数启用。

1. Redo Log 重做日志

        重做日志保存的是事务提交时的物理修改,是用来实现事务的持久性的。

它由两部分组成:redo log buffer(重做日志缓冲区),  redo log file(重做日志文件)

前者是在内存中的,后者是在磁盘中的。

        当执行 Update, Delete 操作时,会先在一个叫 Buffer Pool 的mysql的缓存池里面进行更新数据,但是Buffer Pool 不会立马把数据刷新到磁盘,因为更新和删除操作时,会操作随机的数据页,也就是会进行随机磁盘IO,这样效率是很低的。所以就会先把修改记录写到redo log buffer中,事务提交的时候,会把redo log buffer中的数据刷新到磁盘中的redo log file中,这样即使Buffer Pool刷新脏页数据到磁盘的过程中发生错误,也能根据redo log buffer进行数据恢复。

2. Undo Log 回滚日志

        回滚日志用于记录数据修改前的信息,并能提供数据的回滚,也是mvcc中的一个组成部分。

比如,如果你进行了一个 Update操作,那么会在日志里面记录一条相反的Update操作,如果你进行了一个Delete操作, 那么会在日志里记录一条对应的Insert操作。

3. bin Log 二进制日志

记录的是对数据库执行的所有修改操作,但是是逻辑日志.它一般用于主从复制和点播恢复等。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ubuntu计划任务反弹
  • php获取,昨,今,后天.... 本周,月,年...日期时间戳
  • 1.浅谈蓝牙BLE的总体框架
  • 【Mark笔记】基于Centos7.7更改SSH端口重启服务报错
  • SAP S4 销售组的定义和分配
  • WGS84坐标转换代码(JS版)
  • KVM虚拟机添加USB转串口设备
  • Github获8k Star!入选苹果CoreML模型库的Depth Anything是怎么做出来的?
  • 【D3.js in Action 3 精译】1.3 D3 视角下的数据可视化最佳实践(上)
  • 数据结构day6链式队列
  • 多位冒充者曝光!全域外卖官方到底是谁?
  • 谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集
  • 华盈生物-PhenoCycler-超多靶标揭示组织空间位置和互作关系
  • centos磁盘空间满了-问题解决
  • 流程管理与商务智能解决方案(62页PPT)
  • 网络传输文件的问题
  • 分享一款快速APP功能测试工具
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【个人向】《HTTP图解》阅后小结
  • 0x05 Python数据分析,Anaconda八斩刀
  • Apache的80端口被占用以及访问时报错403
  • eclipse的离线汉化
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • js正则,这点儿就够用了
  • learning koa2.x
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • mysql中InnoDB引擎中页的概念
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring声明式事务管理之一:五大属性分析
  • SwizzleMethod 黑魔法
  • 从setTimeout-setInterval看JS线程
  • 大数据与云计算学习:数据分析(二)
  • 简单基于spring的redis配置(单机和集群模式)
  • 实现菜单下拉伸展折叠效果demo
  • 算法---两个栈实现一个队列
  • 想写好前端,先练好内功
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • Nginx实现动静分离
  • puppet连载22:define用法
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​如何在iOS手机上查看应用日志
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #define 用法
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (C语言)逆序输出字符串
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (分布式缓存)Redis哨兵
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (力扣记录)235. 二叉搜索树的最近公共祖先