MySQL 8.0.2 新特性 UNDO表空间管理的灵活性提升
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,一篇自己翻译的文章,原文来自MySQL Server官方团队博客:原文链接:http://mysqlserverteam.com/mysql-8-0-2-more-flexible-undo-tabl
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
数据库图书查询系统论文
到梦空间无法连接服务器
高科技互联网包含哪些
只有 怎么恢复数据库
数据库power函数使用方法
网络安全检查工具破解版
sql数据库表怎么复制
服务器怎么启动注册中心
我的世界迪士尼服务器ip地址
自考本科试题数据库技术
2018年网络安全竞赛题库
2b2t国际服务器地址
环状预测mirna的数据库
中兴上海软件开发二部
demo服务器我的世界
上海邮东网络技术
java数据库连接配置
网络安全红线护身符
广东sp3服务器散热器厂家
数据库1064怎么解决
数据库更新后字段里的内容不见了
unity与数据库
时态数据库算子
航天行业网络安全标准架构
河北程序软件开发公司
风哥数据库教程下载
服务器硬盘安装图解
网络安全逻辑安全包括什么
桓台专业软件开发定制
全球软件开发商排名