浅析如何将undo log从tablespace分离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析如何将undo log从tablespace分离相关的知识,希望对你有一定的参考价值。

mysql5.6.3之后,MySQL支持将undo日志从tablespace(ibdataN)中独立开来放到单独的磁盘上。MySQL官方建议将undo放到ssd上,而把ibdata放在hd。(这里似乎有争论,国内某些大牛建议将顺序读写的log日志放在hdd)

比较重要的一个概念:

虽然undo log被分离出去了,但是其io处理还是在system tablespace内完成,所以定义上来讲还是算tablespace的。文档中原文如下:

“Because these files handleI/O operations formerly done inside the  system tablespace, we broaden the definition of system tablespace to include these new files. ”

undo logs 存放在rollback segment内

下面是三个相关参数:

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

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

物理文件存放位置

定义多少个‘active’的undo logs,默认值和最大值都是128,每个undolog能保存最多1024个事务,这个参数可以用来性能调优,官方建议先将这个参数设小然后逐步增大来观察性能变化。(因为如果一下子分配过多也可能用不到)还有一个参数 Innodb_available_undo_logs的意思是所有的undolog包括active和非active的






以上是关于浅析如何将undo log从tablespace分离的主要内容,如果未能解决你的问题,请参考以下文章

Innodb独立的undo tablespace

undo tablespace RETENTION GUARANTEE

How manager undo tablespace

MySQL 8.0 innodb_undo_tablespace废弃掉

undo 表空间物理文件的建立

Managing the UNDO TABLESPACE