QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:001361
用户头像

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

关注

评论

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

数字化转型的理论体系与具体技术

小炮

数字化转型

Hadoop WordCount案例

Emperor_LawD

hadoop 5月月更

架构实战训练营毕业总结

刘帅

linux之history使用技巧

入门小站

Linux

深入了解 Flutter 的状态管理机制(下)

岛上码农

flutter 移动端 安卓开发 ios 开发 5月月更

真正深入底层!阿里巴巴2022最新版JDK源码剖析笔记太香了

Java全栈架构师

Java 源码 jdk 面试 程序人生

基于 Agora SDK 实现 iOS 端的多人视频互动

声网

视频 SDK教程

5月硬核预告!明晚开讲:Virtio 虚拟化技术趋势与 DPU 实践 | 第16 期

OpenAnolis小助手

云计算 直播 虚拟化 龙蜥社区 龙蜥大讲堂

Hoo网格量化策略 震荡市场中的投资利器

区块链前沿News

量化 Hoo 网格交易

厚积薄发——开源公司商业化之路

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Web常见的漏洞描述与修复方案

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

【愚公系列】2022年05月 二十三种设计模式(十)-外观模式(Facade Pattern)

愚公搬代码

5月月更

在线TSV转多行数据工具

入门小站

工具

开源不易、安全慎行,中国软件如何走向文明?丨RTE 技术环境月报 202205

声网

开源 WebRTC RTE 编解码 技术环境月报

数据仓库规范的重要性

奔向架构师

数据仓库 5月月更

元宇宙现阶段都支持哪些接入现实的活动?

CECBC

开放报名 | 「RTC 进阶实战高手课」系列课程上线

融云 RongCloud

一文看懂Web3.0:元宇宙的基础设施,三大标签颠覆互联网

CECBC

在线2进制8进制10进制16进制进制转换工具

入门小站

工具

小红书持续打击炫富行为:自媒体行业不能违背公序良俗

石头IT视角

algorithm中的排序算法详解

工程师日月

算法 5月月更

iframe框架

恒山其若陋兮

5月月更

数据仓库ETL管理平台TASKCTL调度计划控制原理

敏捷调度TASKCTL

程序员 DevOps 分布式 数据仓库 ETL

40万年才能遇到外星人,是怎么算出来的?

脑极体

开源之夏 2022 火热来袭!欢迎报名 OpenMLDB 社区项目~

第四范式开发者社区

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

微博评论高性能高可用架构设计

小虾米

架构实战训练营毕业设计

刘帅

Web3:创作者经济的黄金时代

CECBC

区块链将掀开人类的新时代

CECBC

druid源码阅读1——获取连接与释放连接

张大彪

带你从0->1学习双指针算法

工程师日月

5月月更

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