为什么DBCC CHECKDB应该每15分钟运行一次?

我正在帮助客户使用ASP.NET编写的垂直市场Web应用程序。 它使用SQL Server 2005作为后端。 客户端在应用程序中遇到性能问题,而供应商支持对于解决问题并没有太大的帮助。 所以客户让我有一个新的眼睛看问题。 在对系统和硬件进行一些基本的审查时,我注意到SQL Server中的“维护”作业计划每15分钟执行一次DBCC CHECKDB,然后执行事务日志备份。 这项工作在工作时间约需要6分钟。

当我向供应商的支持人员询问是否有必要时,我们是否可以将DBCC CHECKDB重新安排为每晚一次,答复是“这是专有信息,什么也不碰”。

我基本上想要了解的是。 DBCC CHECKDB应该每15分钟运行一次吗? 另外,在作业运行时有明显的影响,如何运行这个命令会影响系统性能? 例如,它是否会导致SQL Server丢失内存中的内容?

DBCC CHECKDB确实会影响系统性能 – CPU,磁盘I / O和内存都可能受到影响。 以下是Microsoft提供的一些文档,概述了DBCC CHECKDB如何影响系统的性能:

http://msdn.microsoft.com/en-us/library/aa937548(SQL.80).aspx
http://msdn.microsoft.com/en-us/library/ms175515(SQL.90).aspx

微软的一般build议是,它应该在低使用率的时候运行 – 所以一旦过夜或类似的东西 – 不是每15分钟一天。

DBCC CHECKDB将显示数据库中的任何损坏问题。 除非有底层的硬件或其他问题让人相信在正常的应用程序操作下会发生这种情况,否则我不确定这是为什么。

性能问题的反应或通过? 底层数据模型是什么样的? 你有没有什么感觉常见的查询types? 适当的索引(没有索引的WHERE子句中的列)?