SQL Server填充因子需要注意的问题原创
金蝶云社区-墨迹
墨迹
0人赞赏了该文章 142次浏览 未经作者许可,禁止转载编辑于2023年06月27日 14:00:00

问题:

        数据库文件突然增长巨大(但实际每天的业务并没有变化,并且也未增加大字段)。

原因:

        这种情况下,一般在于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)


注:

        如果不是特别原因,不要修改默认的填充因子,如果需要修改,一定需要做好测试。

                

赞 0