0

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

我使用的是 Sql Server 2005。据说页面大小为 8096 字节。我需要在表中插入行。考虑到行的大小,一个页面可以容纳 4 到 12 行。

因此,我将从.net 中读取数据库中的数据,将其存储在内存中(也许使用一些聚类算法?),然后插入大约 1000 行。

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

4

1 回答 1

1

表是 btree 还是 heap?你上面有聚集索引吗?如果是,那么聚集索引位于哪一列,插入时如何计算列值?

你为什么要从一开始就关心碎片化?空间考虑还是预读性能?对于空间,您应该跳过 SQL 2005 并转到 SQL 2008 进行页面压缩。对于预读,值得研究为什么需要大量预读开始。

总体而言,索引碎片更像是一个被夸大的 bru-ha-ha,每个人都在谈论,但很少有人真正理解。在碎片化成为真正的瓶颈之前,还有更多的途径需要追求。

于 2010-07-13T21:54:22.657 回答