写点什么

SQL Server 2014 SP1 的 NOLOCK 指令中断

  • 2016-06-01
  • 本文字数:765 字

    阅读完需:约 3 分钟

在针对 SQL Server 2014 SP1 的 Cumulative Update #6 更新中,NOLOCK 指令中断。因此,依赖 NOLOCK 指令的数据库可能会意外地经历阻塞或是死锁。根据 SQL Server Release Services 博客最新更新的一篇文章,具体的情景是这样的:

在默认的基于锁的隔离级别或更高的隔离级别下,执行并行的 SELECT (…) INTO Table FROM
SourceTable 语句,特别当使用 NOLOCK 提示时。在这种情况下其他试图访问 SourceTable 的查询将阻塞。

当一个事务持有对象的排他锁(例如进行中的表更新),另外一个事务正在执行并行的 SELECT (…) FROM
SourceTable,并使用 NOLOCK 提示。在这种情况下,尝试访问 SourceTable 的 SELECT 查询将被阻塞。

根据 Microsoft 发布团队的成员 Pedro Lopes 所说,这个错误不会影响使用 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 的代码。

早在推出行级版本(row level versioning),又称快照隔离之前,NOLOCK 提示就经常需要避免阻塞和死锁。然而,使用它会有一些风险。通过设计,运行NOLOCK 的查询可以读取在事务中改变的数据。这代表着决策可以基于最终回滚的事务。同样,决策也可以基于局部更新,例如使用一个记录的新版本和另一个相关记录的旧版本。

由于这些原因,一般不赞成在新的数据库中使用NOLOCK(和READ UNCOMMITTED)。然而,我们不能简单地将现有的数据库转移到行级版本。虽然它可以在不发生脏读的情况下解决阻塞问题,但是它还是需要增加tempdb 使用的成本。

Brent Ozar Unlimited 提供了一款通知服务,当问题解决的时候通知所有 DBA。你可以在 sqlserverupdates.com 报名。

查看英文原文 NOLOCK is Broken in SQL Server 2014 SP1


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-06-01 19:001321
用户头像

发布了 218 篇内容, 共 68.4 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易云信

音视频 即时通讯IM

【网易云信】深度剖析「圈组」关系系统设计 | 「圈组」技术系列文章

网易智企

音视频 即时通讯IM

Linux磁盘管理

A-刘晨阳

Linux 运维 磁盘 磁盘分区 11月月更

LED显示屏的扫描模式及基本工作原理

Dylan

LED LED显示屏 led显示屏厂家

大专学历参加大数据培训可以吗

小谷哥

赋能千行百业数字化转型,OpenHarmony生态新成果即将亮相HDC2022

OpenHarmony开发者

Open Harmony

小巨人,大能量!融云成功入选国家级专精特新“小巨人”企业

融云 RongCloud

企业 IM RTC

深圳前端开发培训机构学习该如何选择?

小谷哥

DTSE Tech Talk | 第9期:EiPaaS驱动企业数字化转型

华为云开发者联盟

云计算 后端 数字化转型 华为云 企业号十月 PK 榜

一文读懂加密资产板块的盈利潜力与投资机会

鳄鱼视界

TDengine | taosdump 的使用方法和注意事项

TDengine

数据库 tdengine 时序数据库

【面试题系列】CurrentHashMap的实现原理

颜淡慕潇

Java HashMap底层原理 面试题系列

服务器的正向代理与反向代理

我是一个茶壶

服务器 正向代理与反向代理 11月月更

HDC2022 开发者亮点抢先看,线上线下精彩活动等你探索!

HarmonyOS开发者

HarmonyOS

golang中的错误处理

六月的

golang 错误处理

KubeEdge云原生边缘计算公开课首发

华为云开发者联盟

云原生 后端 华为云 企业号十月 PK 榜

国内低代码开发平台有哪些作用?

优秀

低代码开发平台

云安全厂商那么多,我们该怎么选择?

行云管家

云计算 企业上云 云厂商 云转售

大数据培训哪个比较好

小谷哥

Java NIO关键概念之Buffer

老农小江

Java 源码解读 java nio

活动预告 | 2022 SACC 中国系统架构师大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

【C++多线程那些事儿】多线程的执行顺序如你预期吗?

C++后台开发

线程 多线程 后端开发 linux开发 C++开发

武汉web前端培训机构去哪好?

小谷哥

前端性能优化常问面试题-防抖节流

肥晨

防抖 节流 防抖节流 前端面试题 11月月更

OpenMLDB BUG 悬赏令

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

大专学历参加大数据培训,学费多少?

小谷哥

Linux常用命令

我是一个茶壶

Linux 命令 11月月更

ArrayList源码解析

Jeremy Lai

源码 ArrayList

AntDB内存管理之内存上下文

亚信AntDB数据库

AntDB aisware antdb AntDB数据库 企业号十月PK榜 企业号十月 PK 榜

OpenMLDB 新手宝典 开发者上手必读

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Linux三剑客grep、sed、awk以及正则表达式

A-刘晨阳

Linux 运维 11月月更 三剑客

SQL Server 2014 SP1的NOLOCK指令中断_DevOps & 平台工程_Jonathan Allen_InfoQ精选文章