-
使用
innodb_undo_directory变量指定撤销表空间的目录位置 。如果未指定目录位置,则会在数据目录中创建撤消表空间。 -
使用
innodb_rollback_segments变量定义回滚段的数量 。从一个相对较低的值开始,随着时间的推移逐渐增加它以检查对性能的影响。的默认设置为innodb_rollback_segments128,这也是最大值。一个回滚段总是分配给系统表空间,32个回滚段保留给临时表空间(
ibtmp1)。因此,要将回滚段分配给撤消表空间,请设置innodb_rollback_segments为大于 33 的值。例如,如果您有两个撤消表空间,则设置innodb_rollback_segments为 35 以将一个回滚段分配给两个撤消表空间中的每一个。回滚段以循环方式分布在撤消表空间中。添加撤消表空间时,系统表空间中的回滚段将变为非活动状态。
-
使用该
innodb_undo_tablespaces选项定义撤消表空间的数量 。指定的撤消表空间数在 MySQL 实例的生命周期内是固定的,因此如果您不确定最佳值,请估计偏高。 -
使用您选择的配置设置创建一个新的 MySQL 测试实例。
-
在数据量与生产服务器相似的测试实例上使用真实的工作负载来测试配置。
-
对 I/O 密集型工作负载的性能进行基准测试。
-
定期增加 的值
innodb_rollback_segments并重新运行性能测试,直到 I/O 性能没有进一步提高。
mysql Undo Tablespaces
最新推荐文章于 2023-12-29 16:22:31 发布
本文详细介绍了MySQL InnoDB撤销表空间的相关配置参数,包括innodb_undo_directory用于指定存放撤销表空间的目录,innodb_undo_tablespaces设定撤销表空间数量,innodb_undo_logs决定回滚段个数,以及如何通过调整这些参数来优化系统性能和减少truncate操作对系统的影响。建议设置innodb_undo_tablespaces为大于等于3以避免系统不可用状态,同时innodb_undo_logs至少为35以确保撤销表空间中有足够的回滚段。此外,还提到了innodb_max_undo_log_size和innodb_purge_rseg_truncate_frequency参数对撤销表空间收缩的影响。
分离
undo
表空间相关的参数
innodb_undo_directory
,指定单独存放 undo 表空间的目录,默认为.(即 datadir),
可以设置相对路径或者绝对路径。该参数实例初始化之后虽然不可直接改动,但是可
以通过先停库,修改配置文件,然后移动 undo 表空间文件的方式去修改该参数;
innodb_undo_tablespaces
,指定单独存放的 undo 表空间个数,例如如果设置为 3,
则 undo 表空间为 undo001、undo002、undo003,每个文件初始大小默认为 10M。该参
数我们推荐设置为大于等于 3,原因下文将解释。该参数实例初始化之后不可改动;
innodb_undo_logs
,指定回滚段的个数(早期版本该参数名字是
innodb_rollback_segments),默认 128 个。每个回滚段可同时支持 1024 个在线事
务。这些回滚段会平均分布到各个 undo 表空间中。该变量可以动态调整,但是物理
上的回滚段不会减少,只是会控制用到的回滚段的个数。
innodb_undo_tablespaces>=2。因为 truncate undo 表空间时,该文件处于 inactive
状态,如果只有 1 个 undo 表空间,那么整个系统在此过程中将处于不可用状态。为
了尽可能降低 truncate 对系统的影响,建议将该参数最少设置为 3;
innodb_undo_logs>=35(默认 128)。因为在 MySQL 5.7 中,第一个 undo log 永远在
系统表空间中,另外 32 个 undo log 分配给了临时表空间,即 ibtmp1,至少还有 2 个
undo log 才能保证 2 个 undo 表空间中每个里面至少有 1 个 undo log;
innodb_max_undo_log_size,undo 表空间文件超过此值即标记为可收缩,默认 1G,
可在线修改;
innodb_purge_rseg_truncate_frequency,指定 purge 操作被唤起多少次之后才释放
rollback segments。当 undo 表空间里面的 rollback segments 被释放时,undo 表空
间才会被 truncate。由此可见,该参数越小,undo 表空间被尝试 truncate 的频率越
高。
1933

被折叠的 条评论
为什么被折叠?



