【问题标题】:SQL Index Rebuild: Index Fragmentation % Increases?SQL 索引重建:索引碎片百分比增加?
【发布时间】:2013-06-24 14:51:11
【问题描述】:

我正在尝试创建一个代理作业,为连接到 Deltek 6.1 接口的 SQL 2008 R2 数据库重建索引。

跑步:

exec sp_msforeachtable 'DBCC DBREINDEX("?"," ",0)'

注意到一些索引实际上变得更加分散。这可能是由于索引间距吗?我们已经在我们的测试和生产网络上通过各种不同的重建方式发生了这种情况。表通常很大,我们在运行重建后更新统计信息。

【问题讨论】:

    标签: sql sql-server-2008 indexing maintenance rebuild


    【解决方案1】:

    用于在 SQL Server 中重建所有表索引的脚本:

    USE DatabaseName --Enter the name of the database you want to reindex 
    
    DECLARE @TableName varchar(255) 
    
    DECLARE TableCursor CURSOR FOR 
    
    SELECT table_name FROM information_schema.tables 
    
    WHERE table_type = 'base table' 
    
    OPEN TableCursor 
    
    FETCH NEXT FROM TableCursor INTO @TableName 
    
    WHILE @@FETCH_STATUS = 0 
    
    BEGIN 
    
    DBCC DBREINDEX(@TableName,' ',90) 
    
    FETCH NEXT FROM TableCursor INTO @TableName 
    
    END 
    
    CLOSE TableCursor 
    
    DEALLOCATE TableCursor 
    

    【讨论】:

    • 我们已经在做与那个查询相同的事情,我们只是使用已经存在的填充因子而不是定义一个新的填充因子。我们遇到的问题是,在运行重建/重组脚本后,平均碎片百分比实际上变得更糟。
    • 数据库的大小是多少?如果您限制了可能有问题的空间量,则至少需要 10% 的可用空间才能成功进行碎片整理。
    • 数据库大小约为60GB,有15.5GB可用空间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2019-10-25
    相关资源
    最近更新 更多