草庐IT

数据恢复技术之日志(undo、redo 和 undo/redo log)

背景事务的原子性是如何保证的?面试中不少被问到吧,这里涉及到事务以及数据的可恢复性,而数据可恢复性的基础技术就是日志,本文将讨论三种日志:undo、redo和undo/redolog。日志:一种安全的方式记录数据变更的历史说明存储介质:内存和磁盘(仅讨论本文涉及到的),认为内存是易失的,磁盘是非易失的事务:包含多个操作,具体ACID属性,所有操作要么全部成功(指数据持久化到磁盘中),要么完全失败(原子性):一条日志,表示开始事务T:一条日志,表示提交T:一条日志,表示在事务T中,对X进行了修改,X的旧值或新值为v:一条日志,表示在事务T中,对X进行了修改,X的旧值为v,新值为w:一条日志,表示

【MySQL】事务日志 undo log 详解

Redolog是事务持久性的保证,Undolog是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undolog。1.Undo日志引入:事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:情况一:事务执行过程中可能遇到各种错误,比如服务器本身的错误,操作系统错误,甚至是突然断电导致的错误。情况二:程序员可以在事务执行过程中手动输入ROLLBACK语句结束当前事务的执行以上情况出现,我们需要把数据改回原先的样子,这个过程称之为回滚,这样就可以造成一个假象:这个事务看起来什么都没做,所以符合原子性要求每当我们要对一条记录做改动时

【MySQL】事务日志 undo log 详解

Redolog是事务持久性的保证,Undolog是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undolog。1.Undo日志引入:事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:情况一:事务执行过程中可能遇到各种错误,比如服务器本身的错误,操作系统错误,甚至是突然断电导致的错误。情况二:程序员可以在事务执行过程中手动输入ROLLBACK语句结束当前事务的执行以上情况出现,我们需要把数据改回原先的样子,这个过程称之为回滚,这样就可以造成一个假象:这个事务看起来什么都没做,所以符合原子性要求每当我们要对一条记录做改动时