[MySQL5.6] Innodb独立的undo tablespace

MySQL5.6中开始支持把undo log分离到独立的表空间,并放到单独的文件目录下。采用独立undo表空间,再也不用担心undo会把 ibdata1 文件搞大;这给部署不同IO类型的文件位置带来便利,对于并发写入型负载,可以把undo文件部署到单独的高速存储设备上。

在数据库初始化的时候就使用如下三个参数
innodb_undo_tablespaces=3 #设置为3个
innodb_undo_logs=128 #默认128个
innodb_undo_directory =/dbfiles/mysql_home/undologs
就可以分离出单独的undo表空间


1.1.1.      undo tablespaces相关参数

涉及到的参数为:

参数

含义

innodb_undo_directory[=/opt/mysql/undo]

Innodb为还原日志创建的独立表空间的相对或绝对路径。通常用于日志被放置在哪些不同的存储设备上。

配合参数innodb_undo_logsinnodb_undo_tablespaces,这决定了系统表空间外还原日志的磁盘分布。默认目录为innodb默认创建它的其他日志文件的目录。

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

innodb_undo_logs[=128]

定义在一个事务中innodb使用的系统表空间中回滚段的个数。如果观察到同回滚日志有关的互斥争用,可以调整这个参数以优化性能。

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

innodb_undo_tablespaces[=4]

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

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

修改该值会导致Innodb无法完成初始化,数据库无法启动,但是另两个参数可以修改;

 1.1.2.      undo 回滚段初始化

(摘自网络)

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

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

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

mysql>show status like 'innodb_available_undo_logs';

+----------------------------+-------+

|Variable_name              | Value |

+----------------------------+-------+

|Innodb_available_undo_logs | 128   |

+----------------------------+-------+

1 row inset (0.00 sec) .

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

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

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



转自:http://gfsunny.blog.51cto.com/990565/1566683

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值