SQL Server可以锁定的资源类型
admin
2023-06-06 16:41:35
0

SQL Server可以锁定的资源类型

SQL Server可以锁定不同类型的资源。这些可以被锁定的资源类型包括:RIDs或键(keys)(行级别),页(pages),对象(objects)(例如,表),数据库(databases)和其他。行位于页中,而也是包含表或索引数据的物理数据块。你首先应该熟悉这些资源类型,到更高级的阶段,你可能会要熟悉其他锁定资源类型,像盘区(extents),分配单元(allocation units),堆(heaps)或B树(B-trees)。

为了获得一个特定资源类型的锁,你的事务必需首先获得更高粒度级别上的相同模式的意向锁。例如,为了获得一个行上的排它锁,你的事务必需首先在行位于的页上申请意向排它锁和拥有页的对象上的意向排它锁。类似的,为了获得一个特定粒度级别上的共享锁,你的事务必需首先在更高粒度级别上申请一个意向共享锁。意向锁的目的是在更高的粒度级别上有效地检测到不兼容锁请求并阻止授予它们。例如,一个事务持有一个行锁,而另一个事务在行位于的整个页或表上请求一个不兼容的锁模式,因为第一个事务在页和表上获得的意向锁,对于SQL Server很容易识别冲突。意向锁不会干扰行级别粒度上的锁请求。例如,一个页上的意向锁不会阻止其它事务在该页的行上获得不兼容的锁模式。

锁兼容性表如下:

请求模式授予了排它锁(X)授予了共享锁(S)授予了意向排它锁(IX)授予了意向共享锁(IS)
是否授予排它锁请求?
是否授予共享锁请求?
是否授予意向排它锁请求?
是否授予意向共享锁请求?

 
SQL Server动态决定锁定哪个资源类型。当然,对于理想的并发,最好只锁定需要锁定的资源,也就是只锁定影响的行。然而,锁定需要内存资源和内部管理开销。因此,当SQL Server选择锁定哪个资源类型时,要同时考虑并发和系统资源。

SQL Server会首先申请细粒度的(fine-grained)锁(像行或页锁),在一定情况下,尝试升级细粒度的锁到更粗粒度(coarse-grained)锁(像表锁)。例如,当一条语句获得至少5000个锁,然后对于每1250个新锁,如果之前尝试锁升级不成功,那么锁升级(lock escalation)被触发。

在SQL Server 2008和SQL Server 2012,你可以通过使用ALTER TABLE语句设置一个表选项,来控制锁升级的行为方式。如果你喜欢,也可以禁用锁升级,或者决定在表级别(默认)或者分区级别发生锁升级。(一个表可以被物理组织到多个更小的单元叫做分区。)


翻译自
Itzik Ben-Gan
Microsoft SQL Server 2012 T-SQL Fundamentals
Page 302
Lockable Resource Types


相关内容

热门资讯

《给阿嬷的情书》,票房超10亿... 据网络平台数据截至5月24日,2026年度电影总票房(含预售)已突破151亿元!其中,电影《给阿嬷的...
美媒称伊朗同意放弃高浓缩铀库存 新华社华盛顿5月23日电(记者黄强 颜亮)据美国媒体23日报道,作为美国与伊朗即将达成的协议中的一个...
全自动洗衣机进水管漏水怎么办 造成全自动洗衣机进水管漏水,要根据原因寻找解决办法,1、由于洗衣机进水管使用年限过长,部分出现损坏,...
电视机闪屏一下又黑屏 问答:1、电视显示屏出现短路或损坏等问题。2、电视的信号源出现干扰。3、电视内部的小零件损坏,如屏幕...
燃气灶点火又灭了怎么回事 原因可能是燃气管道堵塞,需要清理燃气管道,自己不会的话需要让专业的人来;还有可能是燃气灶电池没有电了...
林内热水器点火后一会又熄火 林内热水器不会无缘由的打火之后又熄火,因此需要注意检查这些方面:看热水器当中的水气联动装置,看看是不...
lg电视开机后屏闪一下就黑屏怎... 出现这种情况时,一般就是电视的启动瞬间电流过大造成的,当电流过大时,电视便会自动启动内部的保护机制,...
具身智能新场景浮现,行业等待商... 近日,他山科技发布视频介绍了AI触觉剥虾机,可以给大小不一的潜江小龙虾快速去头。而在浙江纺织业工厂,...
闭眼入不踩雷的日常实用手机推荐 在如今快节奏的生活中,选择一款日常使用方便的品牌手机显得尤为重要。它不仅需要满足工作、娱乐、社交等多...
在轨期间将新开展100余项科学... 图表来源:新华社 朱杨柱 张志远 黎家盈 5月23日上午,神舟二十三号载人飞行任务新闻发布会在...