首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >维修计划

维修计划
EN

Database Administration用户
提问于 2014-10-16 17:52:29
回答 1查看 195关注 0票数 0

我是一个偶然的dba。不久前我确实发了一条关于索引碎片的消息,你们中的一些人建议了维护计划,还有一些人建议了定制Olla的脚本。我已经下载了他的脚本,它现在有点压倒性,但我将接受您的建议,并尽快实现它。现在,为了对整个数据库维护任务感到舒服,我计划使用维护计划向导来实现它。我看过了布拉德McGehee写的书,就像你们中的一些人建议的那样。

我有这个sql集群,它有大约18到20个数据库。现在,我只和一个人一起工作。这是一个小型数据库,大小为30 is,大约有100个用户。我使用以下命令查询数据库以查找索引片段百分比级别

代码语言:javascript
运行
复制
select dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table', 
dbindexes.[name] as 'Index',
dbindexes.[fill_factor] as 'Fill Factor',
indexstats.avg_fragmentation_in_percent,
indexstats.page_count
from sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) as indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes as dbindexes on dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id

where indexstats.database_id = DB_ID() and indexstats.page_count > 1000 
and (indexstats.avg_fragmentation_in_percent >= 10 and  
indexstats.avg_fragmentation_in_percent <= 40)
order by dbtables.[name] 

在10 %到40%之间的任何地方,我都计划重新组织和更新统计数据,而大于40%的数据则计划重建。我运行了查询,并选择了所有具有40%的片段%和1000页以上的索引,大约有15个表和21个索引。我创建了一个维护计划,并只为这15个表选择了重建任务。对于重新组织任务,有10个表,有25个索引。我也为这个计划制定了一个单独的计划。我知道我已经创建了两个不同的计划,但我以前从来没有这样做过,我想在分析脚本并使它更加定制之前,看看它是如何工作的。

除了已制订的后备计划外,我曾考虑过下列维修计划:

1)索引维护- bi每周2)历史清理-每周3)一致性检查-每周

我有几个问题:

1)从未对此数据库进行过更新统计。我确实读过,在重新组织索引之后,我必须手动执行更新统计数据的任务。自动状态更新已启用。我是否必须只对那些被重新组织的索引进行更新统计,或者更新整个数据库的统计数据。通过在测试系统中恢复数据库的一个新副本和运行整个数据库的更新统计数据,我确实检查了需要多长时间,大约需要2小时。

2)我将在我们的维护窗口中执行这些任务,这是非常有限的。我假设在运行这些维护计划之后,我不需要重新启动任何服务器。

您的反馈和帮助将是非常感谢的。

谢谢!

EN

回答 1

Database Administration用户

发布于 2014-10-16 18:30:33

索引重建将更新列的统计信息,其内容相当于完全扫描。重新组织索引根本不会更新统计信息。

关于更详细的解释,本·内瓦雷斯用他的博客写了更多

1)默认情况下,UPDATE STATISTICS语句只使用表记录的示例。在FULLSCAN中使用将扫描整个表。

2)默认情况下,UPDATE statistics语句同时更新索引和列统计信息。使用“列”选项将只更新列统计信息。使用INDEX选项只会更新索引统计信息。

3)重建索引,例如使用ALTER…重建,还将更新与FULLSCAN相同的索引统计信息。重建索引不更新列统计信息。

4)重新组织索引,例如使用ALTER…重新组织,不更新任何统计数据。

同样的情况可以从保罗·兰德尔·波斯特中验证。

2)我将在我们的维护窗口中执行这些任务,这是非常有限的。我假设在运行这些维护计划之后,我不需要重新启动任何服务器。

运行索引重建或更新统计信息后不需要重新启动。为什么人们会引用Ola的脚本,因为它能够查找具有过时统计数据的列,而忽略更新的列。该脚本有更多的好处,因为它将尽可能减少运行这些维护任务所需的时间,并且会产生更少的日志。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/80390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档