【发布时间】:2012-07-04 21:42:06
【问题描述】:
我正在尝试了解 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我明白了
When a select is fired shared lock is taken so no other transaction can modify data(avoiding dirty read).. Documentation also talks about row level, page level, table level lock.我想到了以下场景
Begin Transaction
select * from Transactions
/*
some buisness logic which takes 5 minutes
*/
Commit
我想了解的是获取共享锁的持续时间以及哪个(行、页、表)。
只有在语句 select * from Transactions 运行时才会获取锁,或者在我们到达 COMMIT 之前,它会被获取整整 5 分钟以上。
【问题讨论】:
标签: sql-server tsql locking isolation-level