一个表,A,B,C 三字段,A 和B 是关键字,聚集索引。6000多笔记录,索引重建N次,扫描密度仍然不变:表: 'AAA' (1762925452);索引 ID: 1,数据库 ID: 16
已执行 TABLE 级别的扫描。
- 扫描页数................................: 17
- 扫描区数..............................: 9
- 区切换次数..............................: 8
- 每个区的平均页数........................: 1.9
- 扫描密度 [最佳计数:实际计数].......: 33.33% [3:9]
- 逻辑扫描碎片 ..................: 41.18%
- 区扫描碎片 ..................: 77.78%
- 每页的平均可用字节数........................: 349.5
- 平均页密度(满).....................: 95.68%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。求解,如何将碎片处理让他接近100%?记录删除后是100%扫描密度
已执行 TABLE 级别的扫描。
- 扫描页数................................: 17
- 扫描区数..............................: 9
- 区切换次数..............................: 8
- 每个区的平均页数........................: 1.9
- 扫描密度 [最佳计数:实际计数].......: 33.33% [3:9]
- 逻辑扫描碎片 ..................: 41.18%
- 区扫描碎片 ..................: 77.78%
- 每页的平均可用字节数........................: 349.5
- 平均页密度(满).....................: 95.68%
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。求解,如何将碎片处理让他接近100%?记录删除后是100%扫描密度
现在 系统出问题比较急,查到是这个表,跟踪有语句INSERT到这个表,将这表清空的话程序是正常的,这个表没清空有6000多笔记录,程序就卡死在那边
总共17个page,是否可认定有一部分数据是在混合区存储
此时你重建索引什么的,后面的密度啊什么的是不会有太大变化的吧
不知道是不是这样。
通常从混合区向新表或索引分配页。当表或索引增长到 8 页时,将变成使用统一区进行后续分配。如果对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的所有分配都使用统一区进行。
填充因子设置的是0
ABC都是INT 类型。不管怎样,要怎样让密度接近100%?
数据量很少,不应该是索引碎片的问题,除非是N久没整理过的堆表。
不行就把所有SELECT里加WITH(NOLOCK)。
alter table 表名
rebuild
而一旦把这个表的数据清空了后,锁也没有了,等一段时间后这个表又会insert数据,又会再次有锁定,而且有数据插入,又会导致碎片化。