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

回滚日志(Undo Log) 的 Purge

一、undo log的purge机制

  • 什么是undo log的purge?

Undo log的purge是指在数据库系统中,对已经不再需要的undo log记录进行清理和回收的过程。

  • 是不是事务一提交就会把undo log purge?

当事务提交后,其对应的undo log并不会立即被清理。只有当系统确定没有其他事务再需要这些undo log时,才会进行purge操作。这意味着undo log的生命周期可能比事务的生命周期更长。

二、怎么判断undo log可以被purge?

在数据库系统中,判断undo log是否可以被purge,主要依据以下几点:

  1. 事务提交和undo log的状态:当事务提交后,其对应的undo log并不会立即被清理。只有当系统确定没有其他事务再需要这些undo log来维护读一致性时,才会进行purge操作。

  2. 事务的提交顺序(trx_no):每个写事务结束时都会获得一个递增的编号(trx_no)作为事务的提交序号。而每个读事务会在自己的ReadView中记录开始时看到的最大trx_no为m_low_limit_no。如果一个事务的trx_no小于当前所有活跃的读事务ReadView中的m_low_limit_no,说明该事务在所有读开始之前已经提交,其修改的新版本是可见的,因此不再需要通过undo构建之前的版本,这个事务的undo log就可以被清理了。

  3. undo log的类型:对于不同类型的undo log记录,判断是否可以被清理的方式也有所不同。例如,TRX_UNDO_DEL_MARK_REC类型的undo record对应的记录需要从索引上真正删除后,其对应的undo log才可以被清理。

  4. undo log的生命周期管理:undo log的生命周期可能比事务的生命周期更长,因为它们可能被其他事务用于维护读一致性。只有当所有可能需要这些undo log的事务都完成之后,它们才可以被清理。

  5. purge queue的使用:系统会维护一个purge queue,其中按照事务提交顺序(trx_no)排序,确保先提交的事务对应的undo log先被处理。purge线程会按照这个顺序依次处理undo log,判断哪些记录已经不再需要。

三、Undo log purge的优化

1、调整purge线程数

show global variables like "innodb_purge_threads";

通过增加Purge线程数量,可以加快Purge操作的执行速度。默认情况下,Purge线程数为4,但可以根据服务器的负载和CPU核心数进行调整。例如,如果服务器的CPU资源较为充裕,且负载较高,可以适当增加Purge线程数,如设置为8。

2、设置purge延迟

innodb_purge_rseg_truncate_frequency 是 MySQL 中用于控制 Purge 系统释放回滚段频率的变量,其默认值为 128,表示 Purge 线程每被调用 128 次,就会释放一次回滚段。

该变量的取值范围为 1 到 128,数值越小,Purge 线程释放回滚段的频率越高。当需要加快 Undo 表空间的截断时,可以通过减小该值来实现。

3、监控事务状态

show processlist;
select * from information_schema.innodb_trx;


http://www.kler.cn/a/611022.html

相关文章:

  • 【SpringCloud】认识微服务
  • JVM类加载过程详解
  • 【Python-OpenCV】手势控制贪吃蛇
  • Linux系统管理与编程08:任务驱动综合应用
  • 音视频 三 看书的笔记 MediaPlayer的C/S架构
  • 基于LLM的Agent框架全面比较分析:MGX(MetaGPT X)、AutoGen、OpenHands与秒哒(MiaoDa)
  • WMS WCS系统架构
  • MongoDB 实际工作中应用场景
  • ctfshow WEB web3
  • Conda常用命令汇总(持续更新中)
  • jmeter接口自动化+ant执行(方案)
  • Maven插件学习(二)——测试插件maven-surefire-pluigin
  • Redis原理:watch命令
  • ReentrantLock 锁优化与 synchronized 锁膨胀的共同点
  • 更换Linux的下载源站点(基于Ubuntu)
  • SpringCould微服务架构之Docker(4)
  • 网络华为HCIA+HCIP 动态路由协议
  • 数学爱好者写的编程系列文章
  • 自动驾驶02:点云预处理——01
  • 华文媒体中国沉香考察行 探寻“中国沉香之乡”电白