关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法

关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法,第1张

概述本文主要测试聚集索引表和堆表的插入、删除、更新、查询以及并发情况下的查询效率 在单用户插入、删除、更新、查询的情况下,聚集索引表的效率要优于堆表 这是因为在插入、删除、更新 *** 作时,聚集索引表的读写 *** 作只有一次,而堆表的读写 *** 作则分别为两次,即需要维护索引数据和表数据。 再插入时Page splits/sec的指标,聚集索引表远远高于堆表,这是在插入数据时,由于数据是按照聚集索引列进行组织的,所以聚

本文主要测试聚集索引表和堆表的插入、删除、更新、查询以及并发情况下的查询效率 在单用户插入、删除、更新、查询的情况下,聚集索引表的效率要优于堆表 这是因为在插入、删除、更新 *** 作时,聚集索引表的读写 *** 作只有一次,而堆表的读写 *** 作则分别为两次,即需要维护索引数据和表数据。 再插入时Page splits/sec的指标,聚集索引表远远高于堆表,这是在插入数据时,由于数据是按照聚集索引列进行组织的,所以聚集索引表的叶子/非叶子节点的分裂远远高于堆表。 聚集索引表情况下Page splits/sec=Pages Allocated/sec,即分裂的速度也即重新分配的速度 而堆表情况下Pages Allocated/sec要大于聚集索引表,这是因为堆表页面的无序性造成的,必须每次从IAM页中进行分配,而聚集索引表则可以通过双向链表来查找。 Pages Allocated/sec为sql Server 实例的所有数据库中每秒分配的页数。这些页包括从混合区和统一区中分配的页。 对于查询而言,聚集索引当然是最快的选择了,堆表则需要进行两次查找。更新和删除 *** 作的情况与其类似。 在并发情况下,数据的插入效率,堆表则好于聚集索引表,主要体现在Page splits/sec和page latch waits per second这两个指标上,page latch waits per second可以理解为对页面的争用等待数,因为聚集索引的数据组织的排序性,比如要对热点页面发生相应的争用,而堆表则不存在该问题。 综上,一般情况下,聚集索引表的性能要优于堆表。 但该测试也存在一定的问题,测试数据的有序性无法论证,索引列数据的有序性对插入以及空间利用率都有很大的关系,同时也会影响后续的更新、删除 *** 作的测试。 其次是表的列宽太小,并且初始索引填充因子皆为0,对于更新、删除 *** 作的测试也没有太大意义,因为更新的列宽没有发生变化,对页面的分裂和空间利用率不产生任何影响

总结

以上是内存溢出为你收集整理的关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法全部内容,希望文章能够帮你解决关于通过聚集索引以及堆来对比数据表组织结构-SQLServer最优实践 的一点看法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存