现有一台服务器,win2003企业版+mssql2000企业版,给数据库中的某个表加了1个聚集索引,5个非聚集索引.并通过作业定时来对该表执行DBCC DBRINDEX索引重建工作。可几个工作日后,发现索引重组后的一个小时内,五个非聚集索引中的三个的逻辑扫描碎片百分比就达到99%,在这一个小时内数据表没有任何数据插入。
数据库
------解决方案--------------------------------------------------------
从描述看,只能说明逻辑扫描碎片的方法有问题
实际上碎片对你的性能影响到底多大,没多大影响的话少点折腾数据库,折腾有成本的,也可能折腾出问题来
------解决方案--------------------------------------------------------
同意楼上说法。 到一定指标了再进行处理。
参考
DECLARE @页满度 TINYINT = 80 --可修改
DECLARE @索引页总数 TINYINT = 80 --可修改
SELECT 'alter index ' + i.name + ' on ' + OBJECT_NAME(i.id) + ' rebuild'
FROM Manufacture.sys.sysindexes i ,
Manufacture.sys.dm_db_index_physical_stats(DB_ID('希望查找的数据库名称'), NULL,
NULL, NULL, 'SAMPLED') o
WHERE i.id = o.object_id
AND i.indid = o.index_id
AND o.page_count > @索引页总数
AND avg_page_space_used_in_percent < @页满度
AND i.name NOT LIKE '_WA%'
------解决方案--------------------------------------------------------
不明白是什么原因?
按道理来讲,重建聚集索引时不会影响到非聚集索引的逻辑碎片百分比的(avg_fragmentation_in_percent)
重建非聚集索引也不会影响到聚集索引的逻辑碎片百分比
楼主所说的情况下又没有插入数据,“三个的逻辑扫描碎片百分比就达到99%”
不知道是不是楼主你看错了啊?
------解决方案--------------------------------------------------------
索引碎片增长飞快的话,很大一个原因是你的填充因子过大,可以调低一点