事务在执行commit时突然网络中断的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 nmyhj1981
  • 开始时间 开始时间
N

nmyhj1981

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大虾,事务是先写日志再更新数据库的吗?事务中的commit具体做了些什么事情呢,如果将一个事务中的更新已写到磁盘日志文件中,然后再去写入数据库时,网络突然中断了,这是的事务会处于什么样的状态呢?
 
呵呵&nbsp;你的问题有点好玩,应该是先操作完了才去写日志的,目的就是为了避免出现你说的情况。sqlserver不知道运作原理。oracle里面的做法是<br>事务<br>日志<br>如果还没来得及写日志旧系统崩溃或者断电,等下次数据库启动时,首先进行前滚操作,将上次没有执行完的事务执行完毕,包括哪些执行完成但是没写日志的,然后进行会滚操作,将那些还没有执行完的事务回滚。所以意外宕机后oracle重新启动速度很慢,就是要先前滚,后回滚了。
 
wyb_506,你好,谢谢你回答我的问题,不过,我还是有些不太明白。记得数据库应该是先写日志,然后再更新数据库的,但不知事务完成时是已经写了日志还是没有写日志,如果事务完成时没有写日志,那么,事务完成了,但是这时网络中断了,数据实际上并没有写入日志和数据库中,这种情况下,数据库管理系统根据什么来判断数据是否已经被成功更新了呢?你上面说的前滚操作的依据是什么呢?
 
后退
顶部