innodb_undo_logs - xiaoboluo768/qianjinliangfang GitHub Wiki

  • 定义InnoDB引擎使用的回滚段数,innodb_undo_logs系统变量代替了5.6.3之前版本的innodb_rollback_segments系统变量
    • 其中,一个回滚段始终分配给系统表空间,32个回滚段保留供临时表使用,并托管在临时表空间(ibtmp1)中。要分配给undo logs文件用于事务数据修改时分配的额外回滚段,必须将innodb_undo_logs设置为大于33的值。如果使用独立的undo表空间,那么系统表空间中的回滚段处于非活动状态(据说系统表空间中的那个回滚段在undo log自动收缩的时候会用到)。每个回滚段最多可以支持1024个数据修改事务
    • 当innodb_undo_logs设置为32或更小时,InnoDB仍然会将一个回滚段分配给系统表空间,分配32个回滚段给临时表空间(ibtmp1)
    • 当innodb_undo_logs设置为大于32的值时,InnoDB会将一个回滚段分配给系统表空间,32分配给临时表空间(ibtmp1),其余的回滚段全部用于undo logs独立表空间文件(如果存在undo logs独立表空间文件)。如果不存独立表空间文件,则会把其余的回滚段分配给系统表空间
    • 虽然可以通过该系统变量来增加或减少InnoDB使用的回滚段数,但系统中实际存在的回滚段数量不会减少。该参数至少设置为33,可以通过逐渐增加该参数来避免分配不需要的回滚段数量,通过状态变量Innodb_available_undo_logs可以看到当前空闲的回滚段数量。
    • 全局变量,动态变量,整型值,默认值为128,取值范围为0~128,5.6.3版本引入

上一篇:innodb_undo_log_truncate | 下一篇:innodb_undo_tablespaces