在这种情况下如何避免sql server页面碎片?

时间:2010-07-13 21:27:58

标签: sql-server fragmentation

我想通过尽可能避免碎片来将SQL插件排序到表中以优化页面使用。 我将运行.net Windows服务,每2小时将从数据库中获取一些数据并对其进行优化 以供将来查询。涉及varchar(6000)列,但我估计它很少超过4000字节。 实际上,此列通常可在600到2400之间变化。 这有助于避免截断错误。我仍然可以通过.net控制列大小。 永远不会有更新或删除。只需选择(并每2小时插入一次)。 每2小时将有大约1000个插入。

我正在使用Sql Server 2005.页面大小据说是8096字节。 我需要在表中插入行。给定行的大小,4到12行可以放在页面中。

所以从.net我将从数据库中读取数据,将其存储在内存中,(可能使用一些聚类算法?),并插入大约1000行。

我想知道在这种情况下是否有办法避免或最小化页面碎片。

1 个答案:

答案 0 :(得分:1)

表是btree还是堆?你有聚集索引吗?如果是,那么什么列是聚簇索引,以及如何在插入时计算列值?

为什么一开始就关心碎片化?空间考虑或预读性能?对于space,您应该跳过SQL 2005并转到{2008} for Page compression。为了提前预读,值得研究为什么你需要大量的预读才能开始。

总体而言,指数碎片更多地是一个人人都在谈论的优点,但很少有人真正理解。在碎片成为真正的瓶颈之前,还有许多更多的东西要追求。