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 参数
  • 当清理操作出现系统异常而失败时,清理操作的启动进程可以从临时文件中获取上次清理到达的位置,从而继续清理操作。
posted @ 2021-05-08 11:34  老玉米  阅读(502)  评论(0编辑  收藏  举报