撤消表空间包含撤消日志,这些记录是包含有关如何撤消事务对聚集索引记录的最新更改的信息的记录集合。
撤销日志默认存储在系统表空间中,但也可以存储在一个或多个撤销表空间中。使用撤消表空间可以减少任何一个表空间中撤消日志所需的空间量。撤消日志的 I/O 模式也使撤消表空间成为SSD存储 的理想选择 。
undo 表空间的数量InnoDB
由该
innodb_undo_tablespaces
选项控制。该选项只能在初始化 MySQL 实例时配置。之后无法更改。
无法删除 撤消表空间和这些表空间内的各个 段。
此过程描述如何配置撤消表空间。配置undo表空间后,undo日志存储在undo表空间中,而不是系统表空间中。
undo 表空间的数量只能在初始化 MySQL 实例时配置,并且在实例的生命周期内是固定的,因此建议您在将配置部署到生产系统之前,在具有代表性工作负载的测试实例上执行以下过程.
要配置撤消表空间:
innodb_undo_directory
使用变量 指定撤消表空间的目录位置 。如果未指定目录位置,则在数据目录中创建撤消表空间。innodb_rollback_segments
使用变量 定义回滚段的数量 。从相对较低的值开始,然后随着时间的推移逐渐增加,以检查对性能的影响。默认设置为innodb_rollback_segments
128,这也是最大值。一个回滚段总是分配给系统表空间。因此,要将回滚段分配给撤消表空间,请设置
innodb_rollback_segments
为大于 1 的值。例如,如果您有两个撤消表空间,请设置innodb_rollback_segments
为 3 以将一个回滚段分配给两个撤消表空间中的每一个。回滚段以循环方式分布在撤消表空间中。添加撤消表空间时,系统表空间中的回滚段将变为非活动状态。
innodb_undo_tablespaces
使用该选项 定义撤消表空间的数量 。指定的撤消表空间数在 MySQL 实例的生命周期内是固定的,因此如果您不确定最佳值,请估计偏高。使用您选择的配置设置创建一个新的 MySQL 测试实例。
在数据量与生产服务器相似的测试实例上使用真实的工作负载来测试配置。
对 I/O 密集型工作负载的性能进行基准测试。
定期增加
innodb_rollback_segments
并重新运行性能测试的值,直到 I/O 性能没有进一步改善。