MySQL Status Innodb_available_undo_logs 数据库状态作用意思及如何正确
本站中文解释
InnoDB(可谓是MySQL中灵活性最好的与最彻底的储存引擎)之于Undo Log的查找,是通过一个叫做可用的Undo Log的变量值进行初始化的。
InnoDB内部,有一个可用的Undo Log变量用于指定InnoDB维护的可用Undo log的数量。它的值可以通过变量innodb_available_undo_logs来设置。它的取值范围为128-4294967296(2的32次方),默认值为128,设置值越高,可以维护的Undo log数量就越大。
可用Undo Log变量作用主要表现在在更新或插入操作后,会将更改信息保存到Undo Log中,这样当发生回滚操作时,InnoDB就可以从Undo Log中取出上次操作前的原始记录,再次写到缓冲池中,宛如操作前从未进行过任何更改操作,比如更新,插入等。
如此就实现了数据恢复到操作前的原始状态,从而达到事务的回滚效果,有了Undo Log,就可以实现隔离级别的事务安全。
MySQL设置可用的Undo Log时,最好根据被使用的应用自身的特性来设置。如果使用的是InnoDB,可以根据应用上的DML操作的比例来设置。如果发生的是大量的update或insert操作,Undo Log的数量也最好要设置的十分的高,以保证事务的正确执行。
为了对InnoDB可用的Undo Log变量进行设置和修改,请执行下面的步骤:
安装MySQL之后,请把innodb_available_undo_logs变量添加到 my.cnf文件中,可以设置不同的值:
[mysqld]
innodb_available_undo_logs=
接下来重启MySQL服务,最新的值才能被接受:
$sudo service mysql restart
或者也可以通过另一种方式,使用设置变量命令对其进行修改:
$ sudo mysql -u root -p
mysql>set global innodb_available_undo_logs=;
可以使用以下指令查看当前设置的InnoDB可用的Undo Log变量值:
mysql>show global status like ‘innodb_available_undo_logs’;
+———————————-+———+
| Variable_name | Value |
+———————————-+———+
| Innodb_available_undo_logs | |
+———————————-+———+
1 row in set (0.00 sec)
可以见,InnoDB可用的Undo Log变量与innodb_available_undo_logs变量十分地重要,它可以完成InnoDB的数据恢复,允许事务的回滚操作,MySQL用户应该根据自己的应用来完善节点的可用量参数的设置,以此来保障事务的正确执行。