使用snapshot isolation避免长时间增删事务阻塞SQL视图
SQL长更新场景下视图查询阻塞问题排查
问题背景
- 核心优化目标:避免底层表执行长周期更新操作时,网站依赖SQL视图生成的页面出现“闪屏”、请求阻塞异常
已落地优化逻辑
- 长周期更新存储过程已启用SNAPSHOT隔离级别
- 依托行版本控制(row versioning)机制,直接对更新中表发起的事务性SELECT查询可正常返回更新事务启动前的历史快照数据,运行效果符合预期
异常问题
- 所有基于底层表构建的视图发起的SELECT查询,仍会出现卡顿停滞问题
最终排查结论
该问题不属于传统锁阻塞范畴,查询
sys.dm_tran_locks系统视图未发现处于WAIT状态的锁请求,实际为查询编译前等待同步统计信息更新完成导致的停滞。
- 已确认核心优化逻辑:大规模更新事务中使用SNAPSHOT隔离是保障数据可用性的核心要点,该结论由@Charlieface 提出。
内容的提问来源于stack exchange,提问作者Frobozz
相关产品推荐
相关产品推荐

