Sql server 查找锁升级的原因

Sql server 查找锁升级的原因,sql-server,locking,escalation,Sql Server,Locking,Escalation,在运行SQL Server Profiler时,我遇到了一些问题:升级。当我搜索与Lock:Escalation事件具有相同SPID的语句时,我意识到其中一个delete语句导致了这种情况 有没有办法找出为什么会在这样的地方发生锁升级 声明如下: delete from BOOK_IN_LIBRARY where libraryId in (,,,,); <-20 elements ids CREATE TABLE BOOK_IN_LIBRARY( [libraryId] [bigint

在运行SQL Server Profiler时,我遇到了一些问题:升级。当我搜索与Lock:Escalation事件具有相同SPID的语句时,我意识到其中一个delete语句导致了这种情况

有没有办法找出为什么会在这样的地方发生锁升级

声明如下:

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]

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

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

删除其中20个id意味着删除多达68000行。该语句超过了数据库创建锁升级后的行锁阈值。
更多信息。答案要感谢评论。谢谢大家!

删除其中20个id意味着删除多达68000行。该语句超过了数据库创建锁升级后的行锁阈值。
更多信息。答案要感谢评论。谢谢大家!

您对这20个ID的行数有什么估计吗?通常您可以在查询计划中找到它(作为智能猜测)。将实际的执行计划以XML的形式发布在pastebin.JamesZ上,这是一个好问题!甚至高达3400。我没想到会有这么多排。。所以,我已经达到了阈值,在此阈值之后,SQLServer选择页/表锁,而不是简单的行锁。非常感谢。您对这20个ID的行数有什么估计吗?通常您可以在查询计划中找到它(作为智能猜测)。将实际的执行计划以XML的形式发布在pastebin.JamesZ上,这是一个好问题!甚至高达3400。我没想到会有这么多排。。所以,我已经达到了阈值,在此阈值之后,SQLServer选择页/表锁,而不是简单的行锁。非常感谢。您对这20个ID的行数有什么估计吗?通常您可以在查询计划中找到它(作为智能猜测)。将实际的执行计划以XML的形式发布在pastebin.JamesZ上,这是一个好问题!甚至高达3400。我没想到会有这么多排。。所以,我已经达到了阈值,在此阈值之后,SQLServer选择页/表锁,而不是简单的行锁。非常感谢。