问题:
数据库文件突然增长巨大(但实际每天的业务并没有变化,并且也未增加大字段)。
原因:
这种情况下,一般在于alter index的时候使用了错误的FILLFACTOR填充因子(如为10,表示数据页只填充10%,另外90%空闲)参数导致。
分析:
1:检查表的填充因子情况,如果非0或者100,说明修改过
select distinct object_name(u.object_id),fill_factor,v.rows from sys.indexes u
join sys.partitions v on u.object_id=v.object_id
where fill_factor not in(0,100)
order by v.rows desc
------------------------------------
(无列名) fill_factor rows
T_BD_LOTMASTER 80 62
2:检查系统参数配置,正常情况如下(默认值为0):
select name,value,value_in_use from sys.configurations where configuration_id=109
------------------------------------
name value value_in_use
fill factor (%) 0 0
修复方式:
--执行下面的SQL语句,将结果拷贝出来执行:
select 'ALTER INDEX ALL ON '+name+' REBUILD WITH(FILLFACTOR = 100)' from sys.tables where name not like 'tmp%' and name not like 'z%'
--返回的数据类似
ALTER INDEX ALL ON T_E**** WITH(FILLFACTOR = 100)
ALTER INDEX ALL ON T_F**** WITH(FILLFACTOR = 100)
注:
如果不是特别原因,不要修改默认的填充因子,如果需要修改,一定需要做好测试。