SQLSERVER多字段的非聚集更新时加锁问题

ddyouyue 2015-05-06 11:38:39
求SQLSERVER高手解答:
SQLServer在对于一个多字段非聚集索引更新的时候会怎么加锁?
对索引值UPDATE的时候会对单个索引值加锁还是整个索引加锁?
更新完成后会不会立马对索引进行排序,排序时会不会对影响的索引值加锁?
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-05-08
  • 打赏
  • 举报
回复
最小的存储单位是页,在页上专门有个叫插销(Latch)的东西。
无论是仅修改索引值、还是同时进行重排,只要修改某个页的内容,进程都会:先加一个插销、修改、最后解插销。
你可以把插销看成一种临时锁(有的翻译直接把latch叫成锁了),它只是没有事务那么持久而已。
ddyouyue 2015-05-08
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
锁是按记录来的。 更改时用记录的RID加了一个锁,非聚集索引的节点上有RID,等于这个索引节点也加了锁。 更新索引字段如果改变了和前后记录的大小关系,会马上进行排序。排序和记录锁没关系。不明白你所谓的“影响”指什么?
比如多字段索引 index(a,b,c) 那么他的索引值保存在数据库里面 (1,1,2),(1,1,3),(1,1,4)是两个不同的索引值,是这样保存的吗? 如果我修改(1,1,3)为(1,2,3)会造成索引重排序,数据库会不会在(1,1,2)和(1,1,4)上面加上锁
薛定谔的DBA 2015-05-07
  • 打赏
  • 举报
回复
1. 更新时还有多种情况,是否有条件,更新的列是否在索引中,是否有聚集索引。如果条件符合聚集索引,则使用聚集索引查找符合条件的更新列,按顺序一直查找子叶数据,一个个建键锁,再更新聚集索引。。如果条件符合非聚集索引,则先按非聚集索引查找,更新列如果不在聚集索引中,则使用键查找,并键这些对象加键锁,最后更新聚集索引。 2. 没有对索引加锁的说法,索引不是锁粒度。使用到索引的,叫做键key,加的是键锁。更新一行中的值如果索引能找到,就加键锁,一次性更新超过5000行或者更多,锁就会升级表锁。锁升级过程会可能产生意向锁、页锁等。如果使用分区,可以设置表选项让锁不升级为表锁,而可以升级”分区锁“——即锁住分区的索引树。 3. 更新索引看首个键列是怎么排序的,即所以是按什么顺序排序的。更新索引列时也会重新排序键列。更新时(排序)已经锁住相应的键列,是有影响。
Tiger_Zhao 2015-05-07
  • 打赏
  • 举报
回复
锁是按记录来的。
更改时用记录的RID加了一个锁,非聚集索引的节点上有RID,等于这个索引节点也加了锁。
更新索引字段如果改变了和前后记录的大小关系,会马上进行排序。排序和记录锁没关系。不明白你所谓的“影响”指什么?
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL Server(SQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧