我正在here观看Paul S Randal的索引碎片视频。在视频中,保罗说GUID or other random values as high-order key will cause page splits which in turn will cause index fragmentation
。原因是,随机值意味着新记录将被插入随机页面,这可能会导致随机页面上的页面拆分。我的问题:如果新记录没有插入随机页面,页面拆分仍然可以发生,对吗?如果这是真的,这两种情况之间的区别是什么?
primary key
吗?我不是母语为英语的人,也不确定。
感谢。
答案 0 :(得分:3)
索引数据聚集在使用的密钥上。这里提到了“高阶”,因为索引可以是复合的,第一个成员对于订单来说是最重要的。
因此,如果此成员是随机的(并且GUID必须被视为随机的,即使加密人员不喜欢这个术语用于GUID),您将获得比插入连续值更频繁的拆分,即使值不在范围的末尾。
(这也是为什么在为群集主键使用GUID时使用NEWSEQUENTIALID()
而不是NEWID()
对插入性能有很大帮助的原因。)
答案 1 :(得分:1)
如果您的密钥是连续的,那么数据将全部附加在最后,这意味着将根据需要创建新页面。然而,这将创建一个“热点”,其中数据在高容量系统中被推送。对此的解决方案是在某种分类字段中使用聚簇索引,然后是递增主键。