我试图了解sql Server中的隔离/锁定.
我在READ COMMITTED隔离级别(默认)中有以下情况
我们有一张桌子.
create table Transactions(Tid int,amt int) with some records insert into Transactions values(1,100) insert into Transactions values(2,-50) insert into Transactions values(3,100) insert into Transactions values(4,-100) insert into Transactions values(5,200)
现在从msdn我明白了
当选择被启动时,共享锁被采取,所以没有其他事务可以修改数据(避免脏读).文档还涉及行级别,页级别,表级锁定.我想到了以后的场景
Begin Transaction select * from Transactions /* some buisness logic which takes 5 minutes */ Commit
我想要了解的是什么时间共享锁将被获取和哪个(行,页面,表).
只有当交易中的语句select *运行或者在完成COMMIT之前整个5分钟才能获取锁定.