询问者
对某些表插入,导致其他的表堵塞

问题
全部回复
-
sp_lock 查看一下锁信息, 找状态为 Waint 的那条, 看在等等什么资源, 再通过这个来分析为什么会锁
邹老大,看我发的那个图,等待表A的RangeS-U 锁。
这个问题已经讨论了好几天了一直没有结果
那阻塞的时候, 表A上持有什么锁?按照你的描述,存储过程应该不会影响表A?就是不会在表A上下锁?那这表A上的锁是谁下的
表A等待加U锁,这个与你描述中对表A的操作是对的,所以问题是表A被谁下了锁,导致这个被阻塞
邹老大,这问题其实是我碰到,是这样:
第一个存储过程对B表只有Insert操作,其中包含在事务里。
第二个存储过程只对A表有更新的操作。
捕捉阻塞信息,主要是通过dm_tran_locks视图,发现A表被第一个存储过程频繁阻塞,而且只产生的是RangS-U锁等待,其他。A表只有13条记录,大小8K多。
因为两个存储过程不存在任何交集,所以我推断是否因为A表在混合扩展区分配空间上,与B表公用资源导致了某种阻塞,基于这种判断,我重建了A表聚集索引,让A表重新分配混合扩展区的空间,后来阻塞再也没发生