我有一个包含许多列的表,其中总的最大大小大大超过了 8k 边界。这个表包含一个 ModuleID 列,它基本上告诉你它是什么类型的对象(不要担心——我没有设计这个),其中可能有 15 个不同的值。然后它有一个名为 propertyID 的唯一列,它也是一个 IDENTITY(1,1),然后由 SQL Server 递增。ModuleID 上有一个聚集索引,这个值对于选择总是已知的,更新时使用 propertyID(moduleID 很少在此范围内)。表包含几百万行。
因此,关于 INSERT,我的问题是:
a) 非唯一聚集键是否会增加 SQL Server 持有独占页级锁而不是键(行)锁的可能性?
b) 将聚集键更改为递增的唯一 propertyID 将使 SQL Server 能够持有独占 KEY 锁,而这些总是会进入聚集索引的最后一页?
表(在某些安装中)在 moduleID 上分区的事实会改变你的答案吗?