当前位置:   article > 正文

mysql innodb_undo_directory默认_MySQL8.0的 UNDO 表空间管理

innodb_undo_directory

MySQL从8.0开始undo 表空间管理已经发生了改变,在5.7版本中一旦MySQL初始化以后,就不能再改变undo表空间了,所以我们在5.7版本中都是在初始化的时候对undo表空间进行一些设置,类似这样:在my.cnf文件中加入innodb_undo_directory= /data/mysql/undologs 和 innodb_undo_tablespaces=5 这两个参数,之所以这么改,是因为我们想把undo表空单独从系统表空间idbdata中分离出来,这样就可以消除因undo的问题造成对ibdata系统表空间的影响,所以上面的参数配置在5.7版本中是我们对MySQL初始化做的一个常规的最佳实践设置,如果不设置,那么在5.7版本中,undo还是默认会放在ibdata中。

从MySQL8.0版本开始,MySQL默认对undo进行了分离操作,也就是说,不需要在初始化中手动配置参数,默认会在datadir目录下生成两个10兆大小的undo表空间文件undo_001 和 undo002 并且可以在线的增加和删除undo表空间文件进行动态扩容和收缩,这在之前的版本都是不被准许的,MySQL也在越做越优,相信以后会更加智能和全面。

关于MySQL undo表空间我们需要掌握的知识如下:在线增加删除undo ,在线查看undo表空间信息:

在线增加undo表空间:

官方文档原文描述为:Because undo logs can become large during long-running transactions, creating additional undo tablespaces can help prevent individual undo tablespaces from becoming too large. As of MySQL 8.0.14, additional undo tablespaces can be created at runtime using CREATE UNDO TABLESPACE syntax.

CREATE UNDO TABLESPACE tablespace_name ADD DATAFILE ‘file_name.ibu’;

The undo tablespace file name must have an .ibu extension. It is not permitted to specify a relative path when defining the undo tablespace file name. A fully qualified path is permitted, but the path must be known to InnoDB. Known paths are those defined by the innodb_directories variable. Unique undo tablespace file names are recommended to avoid potential file name conflicts when moving or cloning data.

在线删除undo表空间

ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;

DROP UNDO TABLESPACE tablespace_name;

需要两个步骤,先设置为inactive状态,然后再去删除。

undo表空间的查询

8.0版本中,我们查询undo如下

SELECT TABLESPACE_NAME, FILE_NAME FROM INFORMATION_SCHEMA.FILES

WHERE FILE_TYPE LIKE ‘UNDO LOG’;

SELECT NAME, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES

WHERE NAME LIKE tablespace_name;

也可通过下面命令查看一下undo的相关信息:

mysql> SHOW STATUS LIKE ‘Innodb_undo_tablespaces%’;

±---------------------------------±------+

| Variable_name | Value |

±---------------------------------±------+

| Innodb_undo_tablespaces_total | 2 |

| Innodb_undo_tablespaces_implicit | 2 |

| Innodb_undo_tablespaces_explicit | 0 |

| Innodb_undo_tablespaces_active | 2 |

±---------------------------------±------+

相对来说MySQL8.0版本对undo的管理已经比以前好多了,可以在线增加,删除,也可以随时查看undo的一些信息,更多的undo表空间意味着并发事务可以尽可能的使用单独的回滚段来减少相同资源的争用,相信以后的版本会越来越优秀,我们将拭目以待。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/122038
推荐阅读
相关标签
  

闽ICP备14008679号