首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找锁升级的原因

查找锁升级的原因
EN

Stack Overflow用户
提问于 2015-06-19 16:42:50
回答 2查看 450关注 0票数 1

在运行SQL Server事件探查器时,我遇到了一些Lock:Escalations。当我搜索与Lock:Escalation event具有相同SPID的语句时,我意识到这是由某个delete语句引起的。

有没有办法找出在这样的地方发生锁升级的原因?

语句如下:

代码语言:javascript
复制
delete from BOOK_IN_LIBRARY where libraryId in (,,,,); <-20 elements ids

CREATE TABLE BOOK_IN_LIBRARY(
[libraryId] [bigint] NOT NULL,
[bookId] [bigint] NULL,
[otherData] [bigint]NULL,
[otherData2] [int] NULL,
[otherData3] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[libraryId] ASC,
[bookId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
EN

回答 2

Stack Overflow用户

发布于 2015-06-19 19:03:42

您可能不需要担心Lock Escalation,因为这将帮助SQL Server更快地处理查询。但同时,由于它阻止了一系列记录(页级锁定或范围锁定或表级锁定),这些页面中的记录将被阻止用于其他会话。需要访问这些页面中的记录的其他用户必须等待,直到锁被释放。

票数 0
EN

Stack Overflow用户

发布于 2015-06-19 21:19:55

删除这些id中的20个意味着最多删除68000行。该语句超过了行锁的阈值,超过此阈值后,数据库将创建锁升级。更多信息Lock Escalation (Database Engine)。答案多亏了JamesZ评论。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30933734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档