登记日记文件时为什么必须先写日记文件,后写数据库?日志文件能否和数据库存储在一起,为什么?

登记日记文件时为什么必须先写日记文件,后写数据库?日志文件能否和数据库存储在一起,为什么?,第1张

因为日志是用来恢复数据库的。

举例来说,如果先写数据库,后写日志,但是在刚好写了数据库而未写日志的时候崩溃了,那么根据日志恢复出来的数据库就少了一条记录(假设是插入 *** 作)。但反过来的话,完全可以根据日志文件把这条数据恢复出来。

同样的原因,日志文件是不推荐和数据库存储在同一个硬盘的,因为一旦硬盘坏了就会一起死掉。当然,如果已经使用了带容错的RAID,甚至是盘柜之类的设备,那么可以放在一起没有太大问题。

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:

1. 登记的次序严格按并发事务执行的时间次序。

2.

必须先写日志文件,后写数据库。

把对数据的修改写到数据库中和把写表示这个修改的日志记录写到日志文件中是两个不同的 *** 作。有可能在这两个 *** 作之间发生故障,即这两个写 *** 作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO *** 作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。这就是“先写日志文件”的原则。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10100272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存