mysql撤销存储管理的原理

  介绍

这篇文章主要讲解了“mysql撤销存储管理的原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql撤销存储管理的原理”吧!

<强>一.undo存储管理
1。innodb存储引擎对撤销的管理同样采用段的方式。
每个回滚段包含1024个undo日志部分,事务再每个undo日志段中进行撤销页的申请。

  2. innodb1.2开始,可以通过下面参数对回滚段做进一步的设置:
innodb_undo_directory ,,#撤消表空间存放目录
innodb_undo_logs ,,,,,,,#设置回滚段的个数
innodb_undo_tablespaces, #设置构成回滚段文件的数量,这样可以较为平均的分布在多个文件中
innodb_undo_log_truncate  #参数设置为1,即开启在线回收(收缩)undo日志日志文件,支持动态设置
innodb_max_undo_log_size ,,#当撤消表空间超过该参数设定时,会标记为截断,选择一个撤销表空间进行截断
innodb_purge_rseg_truncate_frequency ,,,#撤消表空间一般不能直接截断,需要在所有回滚段释放完后,才能截断,清洗系统每128次释放一次回滚段,可以通过参数

  3.事务在undo日志部分分配页写入undo日志的过程同样需要写入重做日志,当事务提交时,innodb会做以下两件事:
- - - - - -将undo日志放入列表,以供以后的清洗操作
-判断undo日志所在页是否可以重用,若可以则分配给下个事务使用

<强>二。undo日志格式
1。插入undo日志
指在插入操作中产生的undo日志,因为插入操作的记录只对事务本身可见,因此该undo日志在事务提交后直接删除,不需要进行清洗操作。

  2.更新undo日志
记录的是对删除和更新操作产生的undo日志,该日志需要提供mvcc机制,因此不能在事务提交时就进行删除。提交时放入undo日志链表,等待清洗线程进行清除。

<强>三。查看撤销信息
1。查看回滚段所在页
选择segment_id,空间,从information_schema.innodb_trx_rollback_segment page_no;

  2.记录事务对应的undo日志信息
select * from information_schema.INNODB_TRX_UNDO \ G;

<强>四。净化机制

  清洗用来最终完成删除和更新操作。

  全局动态参数innodb_purge_batch_size用来设置每次清洗操作需要清理的撤销页面数量。默认值为300

  全局动态参数innodb_max_purge_lag用来控制历史列表的长度,若大于该参数时,其会延缓DML的操作

  全局动态参数innodb_max_purge_lag_delay,用来控制DML操作每行数据的最大延缓时间,单位为毫秒。


 mysql撤销存储管理的原理

感谢各位的阅读,以上就是“mysql撤销存储管理的原理”的内容了,经过本文的学习后,相信大家对mysql撤销存储管理的原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

mysql撤销存储管理的原理