innodb_undo_tablespaces - xiaoboluo768/qianjinliangfang GitHub Wiki

  • 使用多少个独立undo log表空间文件来存放分配给事务数据修改使用的回滚段数量。默认情况下,回滚段全部分配给系统表空间,且就算独立undo log表空间文件存在,系统表空间也总是至少分配一个回滚段
    • 由于在长时间运行的事务中,undo日志可能会变大,因此把undo log划分到多个且独立的undo log表空间中有助于减少单个数据文件表空间文件的大小,undo独立表空间文件创建位置由系统变量innodb_undo_directory定义,独立表空间文件的命名名称采用undoN形式,其中N是一系列连续的整数(从001开始,依次为002,003...直到最大值126或095)
    • undo表空间文件的默认大小为10M
    • 重要:innodb_undo_tablespaces系统参数只能在初始化MySQL实例之前进行配置,如果是初始化之后进行更改不会生效。如果在初始化时未指定该系统变量,则默认为0,即不使用独立undo log表空间,后续如果强行修改配置文件尝试使用独立undo log表空间,则在启动时报错,拒绝启动且会显示InnoDB没有找到undo log文件的错误
    • 如果innodb_undo_logs系统参数配置为最大值128,那么128个回滚段中的32个保留用于临时表空间,一个回滚段始终分配给系统表空间,这就表示可用于独立undo log表空间文件的回滚段数量只剩下95个。这意味着innodb_undo_tablespaces最大限制为95
    • 全局变量,只读变量,整型值,默认值为0,取值范围在5.7.7及其之前的版本中为0126(系统表空间和临时表空间各占用了一个),5.7.8及其之后的版本中为095(系统表空间占用一个,临时表空间占用32个),5.6.3版本引入

上一篇:innodb_undo_logs | 下一篇:innodb_stats_method