Mysql_撤消日志(Undo Logs)

撤消日志(Undo Logs)

撤消日志是与单个读写事务关联的撤消日志记录的集合。撤消日志记录包含有关如何撤消事务对聚簇索引 记录的最新更改的信息。如果另一个事务需要将原始数据视为一致读取操作的一部分,则将从撤消日志记录中检索未修改的数据。撤消日志存在于 撤消日志段中撤消日志段中包含 撤消日志。回滚段位于 系统表空间撤消表空间临时表空间中

驻留在临时表空间中的撤消日志用于修改用户定义的临时表中的数据的事务。这些撤消日志未重做记录,因为崩溃恢复不需要它们。它们仅在服务器运行时用于回滚。这种类型的撤消日志通过避免重做日志I / O来提高性能。

InnoDB支持最多128个回滚段,其中32个分配给临时表空间。剩下的96个回滚段可以分配给修改常规表中数据的事务。该 innodb_rollback_segments变量定义通过使用回退段的数目 InnoDB

回滚段支持的事务数取决于回滚段中的撤消插槽数和每个事务所需的撤消日志数。

回退段中撤消插槽的数量根据InnoDB页面大小而有所不同。

InnoDB页面大小回滚段中的撤消插槽数(InnoDB页面大小/ 16)
4096 (4KB)256
8192 (8KB)512
16384 (16KB)1024
32768 (32KB)2048
65536 (64KB)4096

一个事务最多可以分配四个撤消日志,以下每种操作类型都可以分配一个:

  1. INSERT 用户定义表上的操作
  2. UPDATEDELETE用户定义表上的操作
  3. INSERT 用户定义的临时表上的操作
  4. UPDATEDELETE用户定义的临时表上的操作

撤消日志根据需要分配。例如,对常规和临时表执行INSERTUPDATEDELETE操作的事务需要完全分配四个撤消日志。仅对INSERT常规表执行操作的事务 需要单个撤消日志。

从已分配的系统表空间或撤消表空间回滚段中分配了对常规表执行操作的事务的撤消日志。从指定的临时表空间回滚段中分配了对临时表执行操作的事务的撤消日志。

分配给事务的撤消日志在其持续时间内一直与事务相关。例如,为INSERT 常规表上的操作分配给事务的撤消日志用于该事务INSERT在常规表上执行的所有 操作。

给定上述因素,可以使用以下公式来估计InnoDB能够支持的并发读写事务数。

注意

在达到InnoDB能够支持的并发读写事务数之前,事务可能会遇到并发事务限制错误。当分配给事务的回滚段用尽撤消插槽时,就会发生这种情况。在这种情况下,请尝试重新运行事务。

当事务对临时表执行操作时,InnoDB能够支持的并发读写事务 数受分配给临时表空间的回滚段数(即32)限制。

  • 如果每个事务执行任一种 一种 或 操作,并发读-写事务的数目即 能够支持的是: INSERT UPDATEDELETEInnoDB

    (innodb_page_size / 16) * (innodb_rollback_segments - 32)
    
  • 如果每个交易执行 一个 或 操作,即并发读-写事务的数目 是能够支持的是: INSERT UPDATEDELETEInnoDB

    (innodb_page_size / 16 / 2) * (innodb_rollback_segments - 32)
    
  • 如果每个事务INSERT在临时表上执行 操作,InnoDB则能够支持的并发读写事务数 为:

    (innodb_page_size / 16) * 32
    
  • 如果每个交易执行 一个 或 操作上的临时表,并发读写的事务的数目 是能够支持的是: INSERT UPDATEDELETEInnoDB

    (innodb_page_size / 16 / 2) * 32
    

更多内容欢迎关注我的个人公众号“韩哥有话说”,100G人工智能学习资料,大量后端学习资料等你来拿。

韩哥有话说

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值