Undo 表空间
Undo 表空间
- Undo 表空间存放 Undo 日志,Undo 日志存储用于事务回滚的上一版本的聚集索引记录信息集合。
- Undo 日志默认被存储在系统表空间中,也可以存储在一个或多个 Undo 表空间里。使用独立的 Undo 表空间可以降低单个表空间需要占用的空间大小。使用 SSD 存储 Undo 日志可以在 I/O 性能上得到更好的性能体验。
- innodb_undo_tablespaces 选项可以控制 Innodb 存储引擎中 Undo 表空间的数量。 这个选项只有当 MySQL 实例被初始化的时候才可以设置,初始化后该值无法变更。
- Undo 表空间和表空间中的若干个段(Segments)是无法删除的。然而,存储在 Undo 表空间中的 Undo 日志可以被清理。
配置 Undo 表空间
- 当 Undo 表空间配置后, Undo 日志会存储在 Undo 表空间中,而不会存储在系统表空间中。
- Undo 表空间的数量只有在 MySQL 实例初始化的时候才可以配置,并且在整个实例的生命周期中是固定的。因此,建议在测试环境做一轮比较有代表性的压力测试,而后再在生产环境中部署配置。
Undo 表空间相关的几个配置
- innodb_undo_directory
- innodb_rollback_segments
- innodb_undo_tablespaces
- innodb_undo_log_truncate
- innodb_max_undo_log
- innodb_purge_rseg_truncate_frequency
自动清理 Undo 表空间文件性能相关
- Undo 表空间的数量
- Undo 日志的数量
- Undo 表空间的大小
- I/O 子系统的性能效率
- 是否存在长事务
- 系统负载
Undo 表空间清理恢复
- undo_space_number_trunc.log 文件
- 日志目录使用 innodb_log_group_home_dir 参数
- 当清理操作出现系统异常而失败时,清理操作的启动进程可以从临时文件中获取上次清理到达的位置,从而继续清理操作。
更多动态请关注微信公众号 dbagrant