我正在尝试了解 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 * from Transactions
或者在我们到达 COMMIT 之前会获取整个 5 分钟以上的时间。