MySQL 8.0.2 新特性 UNDO表空间管理的灵活性提升
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,一篇自己翻译的文章,原文来自MySQL Server官方团队博客:原文链接:http://mysqlserverteam.com/mysql-8-0-2-more-flexible-undo-tabl
千家信息网最后更新 2025年01月20日MySQL 8.0.2 新特性 UNDO表空间管理的灵活性提升一篇自己翻译的文章,原文来自MySQL Server官方团队博客:
原文链接:http://mysqlserverteam.com/mysql-8-0-2-more-flexible-undo-tablespace-management/
同时也发布在了老叶茶馆:
https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=2653930802&idx=1&sn=db6c9acab8fb41da004f36ff90355258&chksm=bd3b5f588a4cd64e25e1beeac66d6a71beaa2ff0617ea8e46d3af5f9a3aecb4ff744b8d06b26&scene=38#wechat_redirect
在MySQL 8.0.2 DMR版本中,我们将提高InnoDB的UNDO表空间易管理性。
〇 主要有几点提升:
1、可以随时自由地创建或删除UNDO表空间;
2、无论是否需要进行InnoDB恢复,也可以在启动前更改相关设置;
3、即便InnoDB引擎处于繁忙状态时,也可以增加或减少UNDO表空间的数量。
〇 innodb_undo_tablespaces:
UNDO表空间包括回滚段,而回滚段又包括UNDO日志。UNDO日志用于'回滚'事务和创建MVCC所需要的旧版本数据,以便在一个事务中保证数据库快照的一致性。
以前,当数据库初始化时,InnoDB的UNDO表空间的数量是确定的。而现在可以随时将其值设置为0~127之间的任意值,并可通过启动时读取的配置文件,或者命令行,或者通过在线'SET GLOBAL INNODB_UNDO_TABLESPACES=n'进行修改。
当UNDO表空间数量设置为0时(不使用独立UNDO表空间),所有的回滚段将存储在系统表空间中。这是在 5.6版本之前,无法支持独立UNDO表空间存储回滚段情景下的旧模式。我们尝试通过这种方式尽量不使用系统表空间,所以默认值不会设置为2。在将来的版本中该选项最小值是2,这表明系统表空间将不会被用作任何回滚段。所以请不要在你的配置文件中设置innodb_undo_tablespaces=0。
〇 innodb_undo_log_truncate:
我们将UNDO表空间的最小值设为2,因为当一个UNDO表空间被清空时,至少还需要有另一个UNDO表空间。InnoDB将在大事务结束后进行UNDO清除操作以收缩UNDO表空间大小。以前,innodb_undo_log_truncate的默认值为OFF,而在8.0.2版本该值默认为ON。
〇 innodb_rollback_segments:
选择可以随时设置为1~128之间的任何值。可通过启动时读取的配置文件,或直接在命令行中传递参数,或者启动后在线执行命令'SET GLOBAL INNODB_ROLLBACK_SEGMENTS=n'。
这个选项曾是用于整个服务器可以支持的回滚段数。现在为每一个UNDO表空间的回滚段数,允许并发事务使用更多的回滚段数,该选项默认值仍为128。
〇 innodb_undo_logs:
该选项在5.6中作为innodb_rollback_segments的替代或者别名所引入。在InnoDB中术语有一点儿混乱,'Undo Logs'存储在回滚段中,这是UNDO表空间的文件段。在8.0.2版本,我们打算弃用该选项改用Innodb_rollback_segments选项。在最新的发布的5.7.19版本中将增加这个不建议使用的warnings提示。
〇 UNDO表空间命名和位置:
UNDO表空间位于innodb_undo_directory所指定的目录中。如果该选项没有被使用,则放在'datadir'中。以前,他们被命名为'undo001', 'undo002'。在8.0.2 DMR版本,他们被称作'undo_001', 'undo_002'等。改名的原因是在新的UNDO表空间中包含了一个新的头页面,其映射了每一个回滚段的位置。而在5.6版本中,当使用独立UNDO表空间时,其回滚段头页面号由系统表空间所跟踪,并且限制整个实例的回滚段数为128。
由于每个UNDO表空间可以使用这个新页来跟踪自己的回滚段,这些是真正新的UNDO表空间类型,并需要有不同的命名约定。这也是innodb_rollback_segments现在定义每个UNDO表空间回滚段数量而不是整个MySQL实例数量的原因。
〇 自动升级:
在此更变之前,系统表空间会跟踪所有回滚段,无论他们位于系统表空间还是UNDO表空间。如果现在在一个使用系统表空间跟踪回滚段的已经存在了的数据库上启动MySQL 8.0.2,将自动生成至少两个新的UNDO表空间。这将是很正常的,因为innodb_undo_tablespaces之前的默认值为0。MySQL 5.7数据库将直接通过升级进程,其中包括从旧的FRM文件创建新的DD。作为此进程的一部分,还将创建至少两个新的UNDO表空间。已经存在于系统表空间中的回滚段和UNDO表空间,如果尚有未清除的undo log,则它们仍然会被InnoDB识别并使用。但是InnoDB不会将这些老的回滚段分配给任何新的事务。所以一旦UNDO恢复完成,并不再需要这些UNDO日志,旧的UNDO表空间也将被删除。
〇 更多好处:
此新特性允许你在数据库规模增长时,动态地添加更多的UNDO表空间和回滚段。使用更多的UNDO表空间,可以更轻松地通过UNDO表空间清除来减少用于存放回滚段的磁盘空间消耗。此外,更多的回滚段意味着并发事务可尽可能的使用单独的回滚段,以减少相同资源的争用。
Thanks for using MySQL!
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px 'Helvetica Neue'}
原文链接:http://mysqlserverteam.com/mysql-8-0-2-more-flexible-undo-tablespace-management/
同时也发布在了老叶茶馆:
https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=2653930802&idx=1&sn=db6c9acab8fb41da004f36ff90355258&chksm=bd3b5f588a4cd64e25e1beeac66d6a71beaa2ff0617ea8e46d3af5f9a3aecb4ff744b8d06b26&scene=38#wechat_redirect
在MySQL 8.0.2 DMR版本中,我们将提高InnoDB的UNDO表空间易管理性。
〇 主要有几点提升:
1、可以随时自由地创建或删除UNDO表空间;
2、无论是否需要进行InnoDB恢复,也可以在启动前更改相关设置;
3、即便InnoDB引擎处于繁忙状态时,也可以增加或减少UNDO表空间的数量。
〇 innodb_undo_tablespaces:
UNDO表空间包括回滚段,而回滚段又包括UNDO日志。UNDO日志用于'回滚'事务和创建MVCC所需要的旧版本数据,以便在一个事务中保证数据库快照的一致性。
以前,当数据库初始化时,InnoDB的UNDO表空间的数量是确定的。而现在可以随时将其值设置为0~127之间的任意值,并可通过启动时读取的配置文件,或者命令行,或者通过在线'SET GLOBAL INNODB_UNDO_TABLESPACES=n'进行修改。
当UNDO表空间数量设置为0时(不使用独立UNDO表空间),所有的回滚段将存储在系统表空间中。这是在 5.6版本之前,无法支持独立UNDO表空间存储回滚段情景下的旧模式。我们尝试通过这种方式尽量不使用系统表空间,所以默认值不会设置为2。在将来的版本中该选项最小值是2,这表明系统表空间将不会被用作任何回滚段。所以请不要在你的配置文件中设置innodb_undo_tablespaces=0。
〇 innodb_undo_log_truncate:
我们将UNDO表空间的最小值设为2,因为当一个UNDO表空间被清空时,至少还需要有另一个UNDO表空间。InnoDB将在大事务结束后进行UNDO清除操作以收缩UNDO表空间大小。以前,innodb_undo_log_truncate的默认值为OFF,而在8.0.2版本该值默认为ON。
〇 innodb_rollback_segments:
选择可以随时设置为1~128之间的任何值。可通过启动时读取的配置文件,或直接在命令行中传递参数,或者启动后在线执行命令'SET GLOBAL INNODB_ROLLBACK_SEGMENTS=n'。
这个选项曾是用于整个服务器可以支持的回滚段数。现在为每一个UNDO表空间的回滚段数,允许并发事务使用更多的回滚段数,该选项默认值仍为128。
〇 innodb_undo_logs:
该选项在5.6中作为innodb_rollback_segments的替代或者别名所引入。在InnoDB中术语有一点儿混乱,'Undo Logs'存储在回滚段中,这是UNDO表空间的文件段。在8.0.2版本,我们打算弃用该选项改用Innodb_rollback_segments选项。在最新的发布的5.7.19版本中将增加这个不建议使用的warnings提示。
〇 UNDO表空间命名和位置:
UNDO表空间位于innodb_undo_directory所指定的目录中。如果该选项没有被使用,则放在'datadir'中。以前,他们被命名为'undo001', 'undo002'。在8.0.2 DMR版本,他们被称作'undo_001', 'undo_002'等。改名的原因是在新的UNDO表空间中包含了一个新的头页面,其映射了每一个回滚段的位置。而在5.6版本中,当使用独立UNDO表空间时,其回滚段头页面号由系统表空间所跟踪,并且限制整个实例的回滚段数为128。
由于每个UNDO表空间可以使用这个新页来跟踪自己的回滚段,这些是真正新的UNDO表空间类型,并需要有不同的命名约定。这也是innodb_rollback_segments现在定义每个UNDO表空间回滚段数量而不是整个MySQL实例数量的原因。
〇 自动升级:
在此更变之前,系统表空间会跟踪所有回滚段,无论他们位于系统表空间还是UNDO表空间。如果现在在一个使用系统表空间跟踪回滚段的已经存在了的数据库上启动MySQL 8.0.2,将自动生成至少两个新的UNDO表空间。这将是很正常的,因为innodb_undo_tablespaces之前的默认值为0。MySQL 5.7数据库将直接通过升级进程,其中包括从旧的FRM文件创建新的DD。作为此进程的一部分,还将创建至少两个新的UNDO表空间。已经存在于系统表空间中的回滚段和UNDO表空间,如果尚有未清除的undo log,则它们仍然会被InnoDB识别并使用。但是InnoDB不会将这些老的回滚段分配给任何新的事务。所以一旦UNDO恢复完成,并不再需要这些UNDO日志,旧的UNDO表空间也将被删除。
〇 更多好处:
此新特性允许你在数据库规模增长时,动态地添加更多的UNDO表空间和回滚段。使用更多的UNDO表空间,可以更轻松地通过UNDO表空间清除来减少用于存放回滚段的磁盘空间消耗。此外,更多的回滚段意味着并发事务可尽可能的使用单独的回滚段,以减少相同资源的争用。
Thanks for using MySQL!
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px 'Helvetica Neue'}
作者微信公众号(持续更新)
空间
版本
系统
事务
数据
数据库
数量
文件
更多
跟踪
命令
日志
存储
独立
配置
最小
两个
之间
位置
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全的影响因素和防范措施
软件开发感兴趣的研究课题
潍坊网络安全问题
数据库temp是什么意思
110网络安全
vba判断数据库是否可以连接
服务器自带的程序没有了
终端与终端服务器有什么区别呢
怎么查看textbox数据库
3中软件开发模型
网络安全市场调研题目
数据库表有哪几种锁
河北联想服务器维修哪家好
电信网络安全的三同步
广东标准软件开发定制价格
黑谷粮仓软件开发
网络安全检查都查什么
服务器hdd如何亮灯
数据库 tab 分割
小国家如何维护网络安全
麻小宝游戏服务器
贵州华为鲲鹏服务器虚拟主机
评论网络安全审查
氓翻译软件开发
互联网科技分级
用数据库制作成绩统计表
数据库用户响应时间
网络安全协议课程设计实验
工程软件开发怎么样
广东网络安全相关培训线上学习