最佳数据库维护的最佳实践是什么?
是否需要更新统计数据?(我认为默认情况下统计数据更新是启用的)如何重组索引或重建它们?缩小数据库?完整性检查?
您多久运行一次它们?
答案1
是否有必要更新统计数据?
在大多数情况下,默认的更新统计信息选项就足够了,但根据您的系统、工作量和性能问题,您可能必须运行明确的更新统计信息。
如何重新组织索引或者重建它们?
业内通常的最佳做法是,如果平均碎片化程度在 10-30% 之间,则进行重组;如果碎片化程度 > 30%,则进行重建。我在此处列出的数字并非绝对的临界值,而只是最佳实践。
缩小数据库?
您不想打开此选项。请花点时间关闭此选项,因为从长远来看,这可能会导致长期性能问题。
完整性检查?
这是绝对必须定期运行的。定期是指每周至少一次。如果数据库是在 SQL Server 2005 之前的版本中创建的,请确保将 page_verify 选项改为 CHECKSUM,如下所示。
更改数据库 DBNAME 设置 PAGE_VERIFY 校验和
我不喜欢使用维护计划来完成这些任务,最好使用 SQL 脚本。我使用 Ola Hallengren 的脚本,它们效果很好,推荐给所有人。您可以从以下位置获取这些脚本
答案2
这篇 Technet 杂志文章有效数据库维护的重要技巧(并跟进播客来自 runas 电台)解答了所有这些问题以及更多问题
以下是该文章的摘要:
如您所见,为了确保数据库保持健康且可用,有一些“必须做”的任务。这是我为非自愿 DBA 接管数据库制定的最终检查清单:
•删除过多的事务日志文件碎片。
•正确设置自动增长。
•关闭任何计划的收缩操作。
•开启即时文件初始化。
•建立定期流程来检测和消除索引碎片。
•打开AUTO_CREATE_STATISTICS 和AUTO_UPDATE_STATISTICS,并建立定期流程来更新统计数据。
•打开页面校验和(或 SQL Server 2000 上的至少页撕裂检测)。
• 定期运行 DBCC CHECKDB。
• 建立定期流程来执行完整数据库备份以及用于时间点恢复的差异备份和日志备份。