undo log 是什么
undo log可以称为撤销日志、undo 日志,它记录着事务回滚前的数据。
官方定义:
A storage area that holds copies of data modified by active transactions.
翻译过来就是undo log是保存活动事务修改的数据副本的存储区域。
undo 日志只记录事务中的增删改操作,查询并不会记录,因为查询不会修改数据。 undo 日志存在于undo日志段中,undo日志段包含在回滚段中。
undo日志段
undo日志段(undo log segment)是undo日志的集合。undo 日志段包含在回滚段中,一个undo日志段可能包含来自多个事务的undo日志,一个undo日志段一次只能被一个事务使用,但是在事务提交或回滚时,释放undo日志段以后可以重用它。undo日志段也可以被称为“undo segment(undo 段)”。
回滚段
回滚段(rollback segment)是包含undo日志的存储区域。回滚段通常位于系统表空间中。从MySQL 5.6开始,回滚段可以存储在undo表空间中,从MySQL 5.7开始,回滚段也被分配到全局临时表空间。
InnoDB最多支持128个回滚段,其中有1个回滚段用于系统表空间,32个回滚段位于临时表空间,剩余的95个用于undo表空间。
可以通过参数innodb_rollback_segments
修改回滚段的个数,默认是最大值128。要分配多余的回滚段给undo表空间的话,回滚段在修改的时候值要大于33。<