【发布时间】:2017-10-30 22:00:54
【问题描述】:
我只是想知道关于读取提交隔离级别上的快照行为。假设我有一个名为“A”的表。这是第一笔交易:
Select blabla
From A
Insert Into A blabla
第二笔交易也是如此
Select blabla
From A
Insert Into A blabla
并假设发生了以下时间线:
Tran1: select
Tran1: insert (not yet committed)
Tran2: select (I don't know it is possible or not)
Tran2: insert
据我所知,在标准的已提交读隔离级别中,由于 tran1 insert 命令尚未提交或回滚,tran2 select 查询将被阻止。但是,虽然启用了“is_read_committed_snapshot”,但我希望在插入或更新命令期间不会获取任何锁。
那么 tran2 会发生什么?
我希望 tran2 选择查询不会看到 tran1 插入的数据,因为它会是“脏读”。但它也不会被阻塞。
由于tran1插入查询没有获取任何锁,这种情况会不会是这两个事务执行并发的问题?
【问题讨论】:
标签: sql-server concurrency transactions isolation-level