在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎么使用MySQL5.6中Innodb独立的undo tablespace

126次阅读
没有评论

共计 2128 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要讲解了“怎么使用 MySQL5.6 中 Innodb 独立的 undo tablespace”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么使用 MySQL5.6 中 Innodb 独立的 undo tablespace”吧!

1. 使用

有几个参数来控制该行为

# innodb_undo_tablespaces

用于设定创建的 undo 表空间的个数,在 Install db 时初始化后,就再也不能被改动了;

默认值为 0,表示不独立设置 undo 的 tablespace,默认记录到 ibdata 中;否则,则在 undo 目录下创建这么多个 undo 文件,例如假定设置该值为 16,那么就会创建命名为 undo001~undo016 的 undo tablespace 文件,每个文件的默认大小为 10M

修改该值可能会导致 Innodb 无法完成初始化;

# innodb_undo_logs

用于表示回滚段的个数(早期版本的命名为  innodb_rollback_segments ),该变量可以动态调整,但是物理上的回滚段不会减少,只是会控制用到的回滚段的个数;

默认为 128 个回滚段

# innodb_undo_directory

当开启独立 undo 表空间时,指定 undo 文件存放的目录

如果我们想转移 undo 文件的位置,只需要修改下该配置,并将 undo 文件拷贝过去就可以了。

2. 相关代码

#在 innodb 启动时 (innobase_start_or_create_for_mysql),会进行 undo 表空间初始化,细节见函数 srv_undo_tablespaces_init

– 如果是新建实例,会去创建 undo log 文件,undo 表空间的 space id 从 1 开始;默认初始化大小为 10M,由宏 SRV_UNDO_TABLESPACE_SIZE_IN_PAGES 控制;

– 读取当前实例的所有 undo 表空间的 space id(trx_rseg_get_n_undo_tablespaces)

首先从 ibdata 中读取到事务系统的文件头,然后再从其中记录的回滚段信息,找到回滚段对应的 space id 和 page no(trx_sysf_rseg_get_space,trx_sysf_rseg_get_page_no),并按照 space id 排序后返回;

– 根据上一步读到的 space id 依次打开 undo 文件 (srv_undo_tablespace_open),如果不存在,就标识启动失败

所以 undo 文件也是类似 ibdata 的重要文件,目前是不可以删除的。。。所以不要试图删除 undo 文件来释放空间 - -!

可以容忍定义的 table space 个数比已有的 undo 文件个数要少 (但所有的 undo 文件依然会打开),反之则报错初始化失败

#undo 回滚段初始化(trx_sys_create_rsegs)

如果是正常 shutdown 重启,并且设置的回滚段个数大于目前已经使用的回滚段个数 (trx_sysf_rseg_find_free),就会去新建回滚段 (trx_rseg_create)

这里总是从第一个 undolog tablespace 开始初始化回滚段,看起来似乎有些问题,极端情况下,如果我每次重启递增 innodb_undo_logs,是不是意味着所有的 undo 回滚段都会写入到第一个 undo tablespace 中?

完成初始化后,将当前可用的 undo 回滚段的个数复制给 srv_available_undo_logs,可以通过 show status 查看:

root@performance_schema 12:16:18 show status like‘Innodb_available_undo_logs’; 
+—————————-+——-+ 
| Variable_name  | Value | 
+—————————-+——-+ 
| Innodb_available_undo_logs | 128  | 
+—————————-+——-+ 
1 row in set (0.00 sec)

启动后,innodb_undo_logs 是可以动态调整的,但最大不可以超过 Innodb_available_undo_logs

#在一个非只读的事务开启时,会为其分配回滚段 (trx_assign_rseg_low),动态的调整 innodb_undo_logs 可以限定分配的回滚段范围;

TODO

当有长时间运行的事务时,可能导致 purge 操作来不及回收 undo 空间,进而导致 undo 空间急剧膨胀;理论上讲,如果做一次干净的 shutdown,应该可以安全的将将这些 undo 文件删除并重新做一次初始化;也许未来的某个 MySQL 版本可能实现这个功能,这对于某些服务(比如按磁盘空间收费的云计算提供商)是非常有必要的功能

感谢各位的阅读,以上就是“怎么使用 MySQL5.6 中 Innodb 独立的 undo tablespace”的内容了,经过本文的学习后,相信大家对怎么使用 MySQL5.6 中 Innodb 独立的 undo tablespace 这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计2128字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 男男羞羞视频免费网站 | 精品国产免费第一区二区三区日韩 | 久久久美女| 无码人妻久久一区二区三区 | 特级毛片s级全部免费 | 日本无遮挡真人祼交视频 | 久久国产一久久高清 | 天天操天天干天天拍 | 中文字幕乱码亚洲无线码 | 男女一区二区三区免费 | 四虎播播 | 欧美日韩国产高清视频 | 亚洲成av人片在线播放无码 | 国产精品久久久久9999高清 | 99青青青精品视频在线 | 久久夜夜操妹子 | 视频偷拍一级视频在线观看 | 在线观看国产三级 | 亚洲色图制服丝袜 | 黄色片视频在线观看免费 | 国产激情久久久久影院老熟女免费 | 久久久久av综合网成人 | 日日躁夜夜躁狠狠久久av | 成人午夜福利院在线观看 | 亚洲国产精品无码专区 | 亚欧成a人无码精品va片 | 国产破外女出血视频 | 久久不见久久见免费影院www | 国产在线综合一区二区三区 | 香港三级日本三级a视频 | 亚洲综合欧美在线一区在线播放 | 国产美女做爰免费视 | 18岁日韩内射颜射午夜久久成人 | 国产放荡对白视频在线观看 | 亚洲国产一区二区三区精品 | 色综合久久久久综合99 | 日本a级片免费观看 | 欧美午夜一区二区福利视频 | 亚洲欧美在线观看视频 | 亚洲精品一区 | 久久99热在线观看7 久久99热这里只有精品 |