MYSQL事务的日志
1.事务日志
1.redo log
redo,顾名思义“重做日志”,是事务日志的一种
作用:
在事务ACID过程中,实现的是“D”持久化的作用。
REDO:记录的是,内存数据页的变化过程
特性:WAL(Write Ahead Log)日志优先写
文字描述流程:
# 修改
1)首先将表中id=1的行所在数据页加载到内存中data buffer page
2)MySQL实例在内存中将id=1的数据页改成id=2
3)id=1变成id=2的变化过程会记录到,redo内存区域,也就是redo buffer page中
4)当敲下commit命令的瞬间,MySQL会将redo buffer page写入磁盘区域redo log
5)当写入成功之后,commit返回ok
# 查询
1.首先将表中id=1的行所在数据页加载到内存中data buffer page
2.将redo log中id=1变成id=2的变化过程取加载到redo buffer page
3.通过data buffer page和redo buffer page得到一个结果
2.undo log
undo,顾名思义“回滚日志”,是事务日志的一种
作用:
在事务ACID过程中,实现的是“A”原子性的作用。当然CI的特性也和undo有关
3.redo和undo的存储位置
#redo位置
[root@db01 data]# ll /application/mysql/data/
-rw-rw---- 1 mysql mysql 50331648 Aug 15 06:34 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Mar 6 2017 ib_logfile1
#undo位置
[root@db01 data]# ll /application/mysql/data/
-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata1
-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata2