我有一张大表,大部分的操作时增删改,有个聚集索引(Clustered index)是个varchar,但显示的是数字,例如:1003,10031,10032,100312. 如果这个varchar数字是持续增长,那么这个聚集索引(Clustered index)fillfactor我需要设置成小于100的吗?

解决方案 »

  1.   

    可以考虑设置为小于100的,这样可以适当的减少 在insert 和 update时,的页分裂
      

  2.   

    你的数据库是2005及以后的版本吗,还是2000的呢,可以通过下面的语句来监控,你的表上有多少的页分裂,如果比较多,那么就考虑把fillfactor设置为小于100 的
      

  3.   

    适合sql server 2005以后的版本,监控语句,你可以先看看数据库中的这个表的insert、update、delte的情况,然后再做出决定,是否要调整fillfactor到小于100
    use 你的数据库
    go
    SELECT db_name(database_id),
           object_name(object_id),
           
           leaf_insert_count,      --插入次数(在叶子级别的页中的)
           leaf_delete_count,      --删除次数(在叶子级别的页中的)
           leaf_update_count,      --更新次数(在叶子级别的页中的)
           
           leaf_allocation_count,  --页的分裂次数(在叶子级别的页中的)
           leaf_page_merge_count,  --页的合并次数(在叶子级别的页中的)       --每多少次插入和更新操作,会导致页的分裂,
           --如果这个比例很大,那就应该考虑把填充因子fillfactor设置小于100%
           leaf_allocation_count * 1.0 /(leaf_insert_count+leaf_update_count)
    FROM sys.dm_db_index_operational_stats
    (db_id(), object_id('数据库名.dbo.表名'), NULL, NULL)
      

  4.   


    我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?
      

  5.   


    我用的是SQL Server 2000,我是有挺多页分裂,但我想不通的是,我的个聚集索引数字是持续增长,为什么在这个表的insert、update、delete 还会出现页分裂?当当前的页放不下,你要插入的这条记录,那么当前的也就会分裂,这个时候要申请一个新的页,把一部分的记录放到新的页中,这个就是页分裂。同样的,如果你update了,而update的字段的值比原来的大,那么导致这个页放不下,update之后的这条记录,也会导致页分裂。