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

2024-11-18 16:44:45
推荐回答(2个)
回答1:

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

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

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

回答2:

如果先写了数据库修改,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。