索引碎片整理脚本

时间:2018-01-29 10:59:20

标签: sql-server sql-server-2017

请为运行索引维护脚本提供帮助。

我正在使用本教程https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html

我下载了脚本,在我的数据库上运行它,然后用我的数据库名称执行了一个示例。

EXECUTE dbo.IndexOptimize
@Databases = 'USER_DATABASES',
@FragmentationLow = NULL,
@FragmentationMedium = 
'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30,
@UpdateStatistics = 'ALL',
@OnlyModifiedStatistics = 'Y'

它贯穿始终,我希望它能改变数据库索引碎片,但它似乎没有改变任何东西。我不确定我是否遗漏了任何东西。

感谢。

1 个答案:

答案 0 :(得分:0)

首先要说的是,如果你的索引少于1000页,那么脚本将忽略索引。这是因为微软(实际上是Paul Randall's)的建议不是重新排序/重建少于1000页的索引。这是因为维护所带来的好处往往是#34;由于索引的大小,可以忽略不计。

其次,如果您的索引少于8页,则页面将以混合范围存储。这也会将你的碎片读数从水中吹走。

需要注意的一点是外部碎片(Total Fragmentation),这是我认为你所说的,从磁盘读取时只是一个问题。如果您能够将所有数据放入内存中,那么您不必过于担心碎片,更多统计信息维护和一致性检查。我提到了一致性检查,因为人们经常比CHECKDB运行索引维护。

如果您真的想了解索引维护和性能,请尝试Brent Ozar的this GroupBy会话。

相关问题