我计划设置一个the作业,以便在DW DB (通过ETL进程存储数据)中执行索引维护,并且随着业务的增长,最终需要更频繁地运行。
问题是,为了对通常从ETL进程加载数据的DW DB进行有效的索引维护,应该考虑哪些因素。
目前,我想实现Ola Hallengren使用的MP
T代码如下:
EXECUTE dbo.IndexOptimize
@Databases = 'StackOverflow2010',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
@FragmentationLevel1 = 30,
@FragmentationLevel2 = 70,
@UpdateStatistics = 'ALL'如有任何其他意见或建议,将不胜感激。
发布于 2018-08-03 13:23:44
如果您担心索引碎片(只有在磁盘上进行范围扫描时才真正重要),但是在ETL过程中定期加载数据,我假设您在ETL过程中启用(并更新)了您的索引。
当您加载数据时,您的索引必须在插入数据时随时更新,但最终会变得支离破碎,这就是您希望重新构建它们的原因。
在加载数据时只为稍后重新生成数据时维护索引对于Server来说是无用的。
我建议考虑的一种方法是
禁用和启用/重新生成表的所有索引的代码如下
ALTER INDEX ALL ON dbo.[Table Name] DISABLE
-- perform data load
ALTER INDEX ALL ON dbo.[Table Name] REBUILDhttps://dba.stackexchange.com/questions/213590
复制相似问题