2022-09-23 故障恢复机制的前生今世(二)

使用RedoLog和<WAL,执行Commit或者Rollback操作,数据刷盘>顺序

可以保证持久性和原子性

case 0

使用UndoLog和<WAL,执行Commit或者Rollback操作,数据刷盘>顺序

在紫色阶段,非易失存储里没有了新值,如果出现crush,就无法恢复了

case 1

使用UndoLog和<WAL,数据刷盘,执行Commit或者Rollback操作>顺序

可以保证持久性和原子性

case 2

以上虽然两种都实现了持久性和原子性,但是只能支持单线程

思路如下:

如果要保证随时可以恢复并执行Commit和Rollback操作,必须把旧值和新值在非易失存储(WAL或者磁盘)里保存;

而上述单Log场景,都将磁盘作为其中一份数据(旧或者新)的保存地址,而当变成多事务场景时,磁盘就成了临界资源;因此合理的手段是同时使用两种日志,这样磁盘里始终拥有两份数据,不用担心Crush。

下面是自己对数据库故障恢复的简单理解,不想再深究了

牙膏困了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容