优化 DBCC CHECKDB 性能
DBCC CHECKDB 及相关语句通常必须从磁盘将每个已分配的页读取到内存中,才能对其进行检查。如果当系统上已经存在大量活动时运行 DBCC CHECKDB,会由于以下两个原因降低 DBCC 的性能。首先,可用的内存减少,并且 SQL Server 数据库引擎 被迫将 DBCC CHECKDB 的一些内部数据假脱机保存到 tempdb 数据库中。其次,DBCC CHECKDB 会试图优化它从磁盘读取数据的方式。如果某一高强度工作负荷也在使用同一磁盘,那么就会大大降低优化性能,从而导致执行速度变慢。
由于 tempdb 数据库驻留在磁盘上,因此在将数据写入或写出磁盘时来自 I/O 操作的瓶颈会降低性能。针对大型数据库(相对于可用内存的大小而言)运行 DBCC CHECKDB 会导致假脱机保存到 tempdb 数据库,而与系统活动无关。因此,应将 tempdb 数据库放置在独立于用户数据库的一个快速磁盘上或多个磁盘上,如 RAID 设备。有关详细信息,请参阅 ALTER DATABASE (Transact-SQL) 和 RAID。
注意: |
---|
执行 DBCC CHECKDB 时会对数据库中的每个表自动执行 DBCC CHECKTABLE,以及 DBCC CHECKALLOC 和 DBCC CHECKCATALOG,因而不必单独运行这些语句。 |