SQL 索引重建:索引碎片百分比增加?
Posted
技术标签:
【中文标题】SQL 索引重建:索引碎片百分比增加?【英文标题】:SQL Index Rebuild: Index Fragmentation % Increases? 【发布时间】:2013-06-24 14:51:11 【问题描述】:我正在尝试创建一个代理作业,为连接到 Deltek 6.1 接口的 SQL 2008 R2 数据库重建索引。
跑步:
exec sp_msforeachtable 'DBCC DBREINDEX("?"," ",0)'
注意到一些索引实际上变得更加分散。这可能是由于索引间距吗?我们已经在我们的测试和生产网络上通过各种不同的重建方式发生了这种情况。表通常很大,我们在运行重建后更新统计信息。
【问题讨论】:
【参考方案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可用空间以上是关于SQL 索引重建:索引碎片百分比增加?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 索引碎片产生原理重建索引和重新组织索引
sql 用于管理SQL Server重建和重组索引碎片的脚本