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

MySQL 8.0开始默认将undo表空间分离,无需手动配置。可在线增加和删除undo表空间文件,通过CREATE UNDO TABLESPACE和ALTER/DROP UNDO TABLESPACE语法操作。查询undo信息可使用INFORMATION_SCHEMA.FILES和INFORMATION_SCHEMA.INNODB_TABLESPACES。MySQL 8.0对undo管理的改进提高了并发事务处理能力。
摘要由CSDN通过智能技术生成

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表空间意味着并发事务可以尽可能的使用单独的回滚段来减少相同资源的争用,相信以后的版本会越来越优秀,我们将拭目以待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值