事务问题,请大家帮忙解释下,分不多
大家好,我有个问题想请教下:
SQL事务:事务修改但尚未提交数据怎么理解?例如下面的例子:
begin tran
update Table2 set X=X+1000;
waitfor delay '00:00:15';
select * from Table2;
commit tran
代码执行到update Table2 set X=X+1000这个地方不是已经对数据库进行修改了吗,难道这个地方修改还没有提交到数据库,提交到底是什么意思?谢谢大家指点下我的困惑
[解决办法]
其实操作最开始还是在缓存里面做,然后才到日志文件里面,再做日志备份、checkpoint(默认一分钟自动执行一次)、lazywriter(不定期自动执行)这些操作时,才会写到数据文件,也就是你锁认为的数据库文件里面去。
一旦commit了,那么日志文件就会标识这部分的操作已经提交,也就是永久性修改。哪怕数据库出故障了,这部分的操作也不会回滚,反而会写入到数据文件中。
[解决办法]