摘要:
mysql进行回滚事物的时候,是怎么样根据redo log和undo里面记录的sql进行的?undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把N...
mysql进行回滚事物的时候,是怎么样根据redo log和undo里面记录的sql进行的?
undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name='B' 修改为Name = 'B2' ,那么undo日志就会用来存放Name='B'的记录,如果这个修改出现异常,可以使用undo日志来实现回滚操作,保证事务的一致性。
对数据的变更操作,主要来自 INSERT UPDATE DELETE,而UNDO LOG中分为两种类型,一种是 INSERT_UNDO(INSERT操作),记录插入的唯一键值;一种是 UPDATE_UNDO(包含UPDATE及DELETE操作),记录修改的唯一键值以及old column记录。
图片来源:网络
mysql有自带回滚功能吗?
你指的是事务回滚吗,mysql 的innodb和ndb引擎支持事务,默认事务自动提交,
使用事务回滚需要先关闭自动提交,set autocommit=off,这个是session级别的设置,每次重连需要重新设置
之后你就可以正常使用事务回滚了