最近在学数据库,碰到一个问题想不通,就是使用redolog不就可以保证事务原子性了吗。首先写写我理解的流程:事务提交-》redolog buffer 写入磁盘-》给用户返回事务提交成功-》后台线程在合适的时机将buffer pool中的数据写入磁盘(如果失败则从redolog中恢复)。那如果是这样的话,在事务提交以前,所有操作都是在内存中进行的,undolog还有什么意义呢。毕竟只有在事务提交以后所有操作才会全部被写到磁盘中,而这时redolog也已经记录了全部的操作了,我们直接从redolog中拿不行吗。