MySQL中的回滚日志(undo log)

保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

使用操作
示例:查看回滚日志最大可占用存储空间(字节)

mysql> SHOW VARIABLES LIKE '%innodb_max_undo_log_size%';
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| innodb_max_undo_log_size | 1073741824 |
+--------------------------+------------+
1 row in set, 1 warning (0.00 sec)

变量“innodb_max_undo_log_size”的意思是,单个回滚日志最大可占用 1G 字节存储空间。

示例:查看回滚日志信息

mysql> SHOW VARIABLES LIKE '%innodb_undo%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_undo_directory | .\ |  -- 表示回滚日志的存储目录是数据目录。 
| innodb_undo_log_encrypt | OFF | -- 表示回滚日志不加密。
| innodb_undo_log_truncate | ON | -- 表示回滚日志是否自动截断回收,前提是设置了独立表空间。
| innodb_undo_tablespaces | 2 |  -- 表示回滚日志有自己的独立表空间,而不是在共享表空间ibdata文件中。
+--------------------------+-------+
4 rows in set, 1 warning (0.00 sec)

这里的结果显示了这 4 个变量的默认值。下面我来分别解释一下。
innodb_undo_directory=.\ ,表示回滚日志的存储目录是数据目录,数据目录的位置可以通过查询变量“datadir”来查看。
innodb_undo_log_encrypt = OFF,表示回滚日志不加密。
innodb_undo_log_truncate = ON,表示回滚日志是否自动截断回收,这个变量有效的前提是设置了独立表空间。
innodb_undo_tablespaces = 2,表示回滚日志有自己的独立表空间,而不是在共享表空间 ibdata 文件中。

未经允许不得转载:任鹏个人博客 » MySQL中的回滚日志(undo log)

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏