首页 > 数据库 >mysql-undo log

mysql-undo log

时间:2024-04-29 16:23:26浏览次数:57  
标签:事务 Log MySQL Undo 并发 InnoDB undo mysql log

MySQL的Undo Log(回滚日志)是InnoDB存储引擎中一个核心的组件,它主要有以下两个目的:

  • 确保事务的原子性
  • 支持多版本并发控制(MVCC)

1. 事务的原子性保证

  Undo Log记录了数据更改之前的状态。

  当一个事务开始修改数据时,InnoDB首先会在Undo Log中记录这些更改的反向操作(比如,一个INSERT操作对应一条DELETE的Undo记录,UPDATE操作则记录变更前的值)。这样,如果事务在执行过程中遇到错误需要回滚,或者用户显式执行ROLLBACK命令,MySQL可以利用Undo Log中的信息将数据恢复到事务开始之前的状态,确保事务的原子性。

2. 多版本并发控制(MVCC)

  在InnoDB中,Undo Log还用于实现多版本并发控制(Multi-Version Concurrency Control),这是一种提高数据库并发性能的技术。

  当一个事务需要读取某行数据时,如果该行正被另一个未提交的事务修改或锁定,InnoDB可以利用Undo Log为这个读操作提供一个之前事务提交时的数据快照。这样,即便有其他事务正在修改数据,当前事务仍能读取到符合其隔离级别要求的数据版本,实现了非锁定读(如READ COMMITTED和REPEATABLE READ隔离级别下的读取),增强了并发性能。

3. 存储与管理

  Undo Log由InnoDB存储引擎管理,并存储在InnoDB表空间内。InnoDB使用回滚段(Rollback Segment)来组织Undo Log,每个回滚段包含多个Undo Log Segment。从MySQL 5.5版本开始,支持多个回滚段,从而能够记录更多的Undo操作。

  Undo Log在事务提交时不立即删除,因为它们可能还需要用于后续的读操作或回滚操作。事务提交后,Undo Log的清理工作是由后台的Purge线程异步执行的,这个过程会根据Undo Log中的信息来回收不再需要的旧版本数据,并释放空间。

总结

Undo Log是MySQL InnoDB引擎中维护事务一致性和提高并发性能的关键机制。它通过记录数据更改前的映像来支持事务的回滚操作,并通过多版本机制帮助实现非锁定读取,从而增强数据库的并发处理能力。

标签:事务,Log,MySQL,Undo,并发,InnoDB,undo,mysql,log
From: https://www.cnblogs.com/use-D/p/18166003

相关文章

  • Docker安装MySQL 5.7
    1.创建数据存储目录先创建3个目录,创建MySQL容器时会挂载容器的卷。mkdirlogmkdirdatamkdirconf2.Docker仓库查看MySQL3.拉取镜像dockerpullmysql:5.74.创建MySQL配置文件[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[......
  • openGauss mysql_fdw
    mysql_fdwmysql_fdw是一款开源插件。openGauss基于开源的mysql_fdwRelease2.5.3版本进行开发适配。编译和使用mysql_fdw需要环境上包含MariaDB的开发包,所以openGauss默认不编译mysql_fdw,下面依次介绍如何编译和使用mysql_fdw。编译mysql_fdw编译mysql_fdw需要安装MariaDB的......
  • 启发式评估(Heuristic Evaluation)--转载 [2011.12.13 sina blog]
    启发式评估(HeuristicEvaluation) -[一架好书--读书学习的收获]2008年08月07日分类: 一架好书--读书学习的收获  版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://buyantang.blogbus.com/logs/27286224.htmlUsabilityInspectionMethods,Edit......
  • python 操作数据库(mysql)
    python操作数据库,可以有如下几种方式。1.安装pymysql。(python的一个mysql的插件,意思就是这个服务本身就是通过python来进行安装的)2.安装mysql-connector。(数据库服务,类似java种的mysql-connector,通过mysql连接工具,可以连接上远程的mysql服务器)使用pip安装插件:python-mpip......
  • openGauss mysql_fdw
    mysql_fdwmysql_fdw是一款开源插件。openGauss基于开源的mysql_fdwRelease2.5.3版本进行开发适配。编译和使用mysql_fdw需要环境上包含MariaDB的开发包,所以openGauss默认不编译mysql_fdw,下面依次介绍如何编译和使用mysql_fdw。编译mysql_fdw编译mysql_fdw需要安装MariaDB的......
  • 启发式评估(heuristic evaluation)方法介绍--转[2011.12.23 sina blog]
    启发式评估(heuristicevaluation)方法介绍(2008-09-0911:56:52)转载▼标签:it分类: 2互联网产品设计什么是启发式评估?启发式评估法就是使用一套简单、通用、有启发性的可用性原则来进行的可用性评估。即几个评审人员根据一些通用的可用性原则和自己的经验来发现......
  • mysql按季度统计数量金额
    需求:oms_order-订单表:order_code-订单号,sales_time-销售时间oms_order_shopify_refund-订单退款表:order_code-订单号,refund_time-退款时间oms_order_product:order_code-订单号,seller_sku-商品编码,buy_quantity-售出数量,refund_quantity-退货数量查询订单时间按季度统计售出数量,并......
  • 虚拟机VMware tools的用途(转载)[2012.2.14 sina blog]
    虚拟机VMwaretools的用途更新虚拟机中的显卡驱动,使虚拟机中的XWindows可以运行在SVGA模式下。在客户操作系统中安装VMwareTools非常重要。如果不安装VMwareTools,虚拟机中的图形环境被限制为VGA模式图形(640x480,16色)。使用VMwareTools,SVGA驱动程序被安装,VMwareWorkstati......
  • 热门:ANLOGIC USB CABLE国产安路下载器
     1.概述   ANLOGIC USBCABLE是用于国产FPGAANLOGIC安路的芯片编程设备。使用TD软件来下载烧录板载芯片。并且速度最大可以支持6Mb/s,极速完成下载和波形调试功能。   安路下载器接口定义: TCKGNDTDOVREFTMSNCNCNCTDI......
  • [转载]自述WebPPD两年半的运营经历 [2012.11.9 sina blog]
    原文地址:自述WebPPD两年半的运营经历作者:尹广磊我在07年10月接触到了AxureRP,当时还是4.6英文版,学习门槛比现在的同学可是高多了。跟所有有过一定产品设计经验的人一样,我一开始是排斥这东西的。自认为过去的Visio用得不错。但是应公司要求,原型务必反映出页面间的链接关系。仅这一......