写点什么

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

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

关注

评论

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

还没用上 Llama3? 一条命令集成到你的应用!

Jade@pluto-lang

AWS SageMaker LLM #LangChain Llama3

YashanDB V23.2 LTS发版

Geek_2d6073

现货量化合约跟单项目系统开发稳定版及详细

系统开发咨询1357O98O718

技术实践|大模型内容安全蓝军的道与术

百度安全

docker镜像配置mysql、redis

百度搜索:蓝易云

MySQL redis Docker Linux 运维

PPT时间轴是什么,该如何制作?分享2种常见绘制方法!

彭宏豪95

职场 PPT 在线白板 时间轴 效率软件

Linux下常用的压缩格式

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ECS

DAPP去中心化智能合约系统开发功能详细及源码

系统开发咨询1357O98O718

Uniswap丨justswap丨pancakeswap去中心化薄饼交易所系统开发指南详细及源码

系统开发咨询1357O98O718

Jmeter是用来做什么的?

百度搜索:蓝易云

Apache Linux 运维 Jmeter 云服务器

UI自动化测试工程实践

智在碧得

自动化测试 UI自动化测试 UI自动化 技术实践 UI自动化例子

MySQL 开源到商业(二):开源骇客沦为大厂社畜

小猿姐

MySQL 数据库

连获多项权威认证!YashanDB安全可靠能力“再加码”

Geek_2d6073

鸿蒙HarmonyOS实战-ArkUI组件(Video)

蜀道山

鸿蒙 HarmonyOS 组件 鸿蒙开发 构架

DeFi/IDO/DAO/DApp/LP/Swap交易所兑换底池质押模式挖矿LP分红系统开发功能步骤及源码

系统开发咨询1357O98O718

永续合约交易所跟单系统开发步骤详细/功能逻辑/源码程序

系统开发咨询1357O98O718

Redis的数据类型到底有什么奥秘

百度搜索:蓝易云

redis 云计算 Linux 运维 云服务器

区块链DApp智能合约系统开发流程步骤及功能

系统开发咨询1357O98O718

区块链交易所系统开发指南教程及功能

系统开发咨询1357O98O718

以数智,赋医道:读懂医疗行业的智能化升级

脑极体

AI

现货合约量化跟单交易所系统开发指南教程/需求设计/源码流程

系统开发咨询1357O98O718

Swap交易所系统开发教程步骤及详细

系统开发咨询1357O98O718

架构实战营 - 模块二 - 作业

小畅

把 KubeBlocks 跑在 Kata 上,真的可行吗?

小猿姐

数据库 云原生 Kata Containers

数据库安全策略有哪些?看YashanDB如何守护数据库安全(上篇)

Geek_2d6073

鸿蒙HarmonyOS实战-ArkUI组件(Popup)

蜀道山

鸿蒙 HarmonyOS 组件 鸿蒙开发 PopupWindow

数字货币交易所系统开发步骤详细及源码

系统开发咨询1357O98O718

区块链交易所系统开发流程指南/案例详细/源码项目

系统开发咨询1357O98O718

DeFi/IDO/LP/DApp代币燃烧模式质押挖矿系统开发详细指南及流程

系统开发咨询1357O98O718

短剧对接广告系统开发详细案例及源码

系统开发咨询1357O98O718

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