undo ⽇志
标签: MySQL 是怎样运⾏的
事务回滚的需求
我们说过事务需要保证原⼦性,也就是事务中的操作要么全部完成,
要么什么也不做。但是偏偏有些时候做到⼀半的时候会出⼀些情况,
⽐如:
情况⼀:事务执⾏过程中可能遇到各种错误,⽐如服务器本身
的错误,操作系统错误,甚⾄是突然断电导致的错误。
情况⼆:程序员可以在事务执⾏过程中⼿动输⼊ROLLBACK语
句结束当前的事务的执⾏。
这两种情况都会导致事务执⾏到⼀半就结束,但是事务执⾏过程中可
能已经修改了很多东⻄,为了保证事务的原⼦性,我们需要把东⻄改
回原先的样⼦,这个过程就称之为回滚(英⽂名:rollback),这
样就可以造成⼀个假象:这个事务看起来什么都没做,所以符合原⼦
性要求。
⼩时候我⾮常痴迷于象棋,总是想找厉害的⼤⼈下棋,赢棋是不可能
赢棋的,这辈⼦都不可能赢棋的,⼜不想认输,只能偷偷的悔棋才能
勉强玩的下去。悔棋就是⼀种⾮常典型的回滚操作,⽐如棋⼦往前⾛
两步,悔棋对应的操作就是向后⾛两步;⽐如棋⼦往左⾛⼀步,悔棋
对应的操作就是向右⾛⼀步。数据库中的回滚跟悔棋差不多,你插⼊
了⼀条记录,回滚操作对应的就是把这条记录删除掉;你更新了⼀条
记录,回滚操作对应的就是把该记录的更新为旧值;你删除了⼀条记
录,回滚操作对应的⾃然就是把该记录再插进去。说的貌似很简单的
样⼦[⼿动偷笑]
文档被以下合辑收录
评论