8. Truncate undo表空间

要Truncate Undo 表空间,必须为MySQL实例配置至少两个undo表空间(两个undo表空间可确保一个undo表空间保持活动状态,另一个处于脱机状态以进行truncate)。undo表空间的数量由innodb_undo_tablespaces控制。,默认值0,最大值95

mysql> select @@innodb_undo_tablespaces;
+---------------------------+
| @@innodb_undo_tablespaces |
+---------------------------+
| 95 |
+---------------------------+
1 row in set (0.00 sec)

8.1 启用 Truncate undo表空间

要truncate undo表空间,请启用 innodb_undo_log_truncate

mysql> SET GLOBAL innodb_undo_log_truncate=ON;

当innodb_undo_log_truncate启用时,一个undo表空间超过参数innodb_max_undo_log_size设置的大小时,将被标记为truncate。

innodb_max_undo_log_size默认值为1024M,最大值2**64 -1,可以动态修改

修改方法:

mysql> SET GLOBAL innodb_max_undo_log_size=2147483648;
  1. undo 超出innodb_max_undo_log_size设置的表空间标记为truncate。选择用于truncate的undo 表空间是以循环方式执行的,以避免每次都truncate相同的undo 表空间。

  2. 驻留在所选undo tablespace中的回滚段将处于非活动状态,以便不会给他们分配新事务。允许完成当前使用回滚段的现有事务。

  3. 清除系统释放那些不需要的回滚段。

  4. 释放undo表空间中的所有回滚段后,将允许truncate操作,并将undo表空间truncate为其初始大小。undo表空间文件的初始大小取决于 innodb_page_size值。对于默认的16k InnoDB页面大小,初始undo表空间文件大小为10MiB。对于4k,8k,32k和64k页面大小,初始undo表空间文件大小分别为7MiB,8MiB,20MiB和40MiB。

  5. 重新激活回滚段,以便将它们分配给新事务。

8.2 加快 truncate undo表空间文件

在释放其回滚段之前,不能truncate表空间。通常,每调用一次purge系统就得purge128次才会释放回滚段。

要增加purge线程释放回滚段的频率,请减少innodb_purge_rseg_truncate_frequency例如:

mysql> select @@innodb_purge_rseg_truncate_frequency;
+----------------------------------------+
| @@innodb_purge_rseg_truncate_frequency |
+----------------------------------------+
| 128 |
+----------------------------------------+
1 row in set (0.00 sec) mysql> SET GLOBAL innodb_purge_rseg_truncate_frequency=32;

8.3 在线truncate undo表空间对性能的影响

当truncate undo表空间时,该表空间中的回滚段暂时停用。其他undo 表空间剩余的活动回滚段承担整个系统负载的责任,这可能会导致性能略有下降。性能下降程度取决于许多因素,包括:

  • undo 表空间数量
  • undo log数量
  • undo表空间大小
  • I/O速度
  • 现有的长事务
  • 系统负载

8. Truncate undo表空间的更多相关文章

  1. MySQL 5.7新特性之在线收缩undo表空间

    1. MySQL 5.5时代的undo log 在MySQL5.5以及之前,大家会发现随着数据库上线时间越来越长,ibdata1文件(即InnoDB的共享表空间,或者系统表空间)会越来越大,这会造成2 ...

  2. 【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理

    一.undo空间原理: dml操作会产生undo数据. update时,sever process 会在databuffer 中找到该记录的buffer块,没有就从datafile中找并读入data ...

  3. 万答#18,MySQL8.0 如何快速回收膨胀的UNDO表空间

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 背 ...

  4. 如何删除回滚段状态为NEEDS RECOVERY的undo表空间

    环境:RHEL 6.4 + Oracle 11.2.0.4 背景:备份恢复的测试库在一次不完全恢复后,没有来及做有效的全备,又一次数据库故障导致数据库无法正常open. 只能离线部分数据文件打开数据库 ...

  5. 记一次ORACLE的UNDO表空间爆满分析过程

    这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...

  6. Oracle 11gR2 Database UNDO表空间使用率居高不下-转载

    客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的 ...

  7. UNDO表空间设置

    flashback query和flashback table都是以用UNDO表空间的内容来进行恢复数据 查看undo内容保存的时间: SQL> show parameter undo_re N ...

  8. UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

    模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除 模拟启库 SQL> STARUP; * 第 1 行出现错误: ORA-01157: 无法标识/锁定数据文件 2 ...

  9. oracle表空间查询维护命令大全之二(undo表空间)

    --undo表空间汇总 --查看全部的表空间名字 select name from v$tablespace; --创建新的UNDO表空间,并设置自己主动扩展參数; create undo table ...

随机推荐

  1. hdoj2952【DFS联通块】

    我觉得还是这种不带回溯的直接搜到底的好玩啊!!!但是要注意边界,记得以前四周要空出来的一道题目,被坑了很久,还是wa到比赛结束!!!这道还是基础题 类似的基础题:POJ1562 hdoj1016 po ...

  2. python计算代码运行时间的装饰器

    import time def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() result = func(*args, ...

  3. 模拟 HDOJ 5095 Linearization of the kernel functions in SVM

    题目传送门 /* 题意:表达式转换 模拟:题目不难,也好理解题意,就是有坑!具体的看测试样例... */ #include <cstdio> #include <algorithm& ...

  4. 486 Predict the Winner 预测赢家

    给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,…….每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到没有剩余分数 ...

  5. (021)VMWare副虚拟磁盘和子虚拟磁盘id不匹配

    问题:因为某种原因,修改了VM虚拟机的父磁盘内容,导致开机时出现如下错误: 父虚拟磁盘在子虚拟磁盘创建之后被修改过.父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配打不开磁盘“***. ...

  6. PHP的知识点总结1

    PHP 基础知识总结 2015-06-03 分类: 编程技术   PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本.HTML.JavaScript代码和 P ...

  7. 获取一段HTML文本中的第一张图片与截取内容摘要

    有时候我们获得到的数据是一段HTML文本,也许这段文本里面有许多图片,需要截取一张作为标题图片,这时就可以用到下面这个方法获取到第一张图片: #region 获取第一张图片 /// <summa ...

  8. AJPFX总结List的三个子类的特点

    ArrayList:                        底层数据结构是数组,查询快,增删慢.                        线程不安全,效率高.              ...

  9. 【转】哪个更快:Java堆还是本地内存

    译文出处: shenzhang   原文出处:原文链接 使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放.当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配.堆 ...

  10. cacti支持中文办法

    1.yum groupinstall "chinese support" 2. 登陆Cacti,在主页的左边点击setting,选择paths页(console>>se ...