KB2634571 . Улучшения команды DBCC CHECKDB могут привести к повышению производительности при использовании параметра PHYSICAL_ONLY

Применяется к
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 3 SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2008 Service Pack 2 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

Корпорация Майкрософт распространяет microsoft SQL Server 2008 R2, SQL Server 2008 R2 с пакетом обновления 1 (SP1) и SQL Server исправления 2008 года в виде одного скачиваемого файла. Так как исправления являются накопительными, каждый новый выпуск содержит все исправления и все исправления безопасности, которые были включены в предыдущие SQL Server 2008 R2, SQL Server 2008 R2 с пакетом обновления 1 (SP1) и SQL Server выпуск исправлений 2008 года.

Введение

Команда DBCC CHECKDB распределяет потребности между производительностью и ресурсами. Таким образом, по умолчанию команда DBCC CHECKDB не может максимизировать использование ресурсов при выполнении проверок согласованности базы данных.

Например, команда DBCC CHECKDB не может максимизировать использование операций ввода-вывода на диске при выполнении проверок согласованности базы данных.

Решение

Сведения о накопительных обновлениях

SQL Server 2008 с пакетом обновления 2 (SP2)

Исправление этой проблемы было впервые выпущено в накопительном обновлении 9 для SQL Server 2008 с пакетом обновления 2 (SP2). Чтобы получить дополнительные сведения об этом накопительном пакете обновления, щелкните следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:

2673382 накопительный пакет обновления 9 для SQL Server 2008 с пакетом обновления 2 (SP2)

                 Примечание Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 года. Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2402659 сборки SQL Server 2008, выпущенные после выпуска SQL Server 2008 с пакетом обновления 2 (SP2)

Исправления Microsoft SQL Server 2008 создаются для конкретных пакетов обновления SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 2 (SP2) к установке SQL Server 2008 с пакетом обновления 2 (SP2). По умолчанию любое исправление, предоставляемое в пакете обновления SQL Server, входит в следующий пакет обновления SQL Server.

SQL Server 2008 с пакетом обновления 3 (SP3)

Исправление этой проблемы было впервые выпущено в накопительном пакете обновления 4 для SQL Server 2008 с пакетом обновления 3 (SP3). Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:

2673383 накопительный пакет обновления 4 для SQL Server 2008 с пакетом обновления 3 (SP3)

                 Примечание Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 года. Корпорация Майкрософт рекомендует применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2629969 сборки SQL Server 2008, выпущенные после выпуска SQL Server 2008 с пакетом обновления 3 (SP3)

Исправления Microsoft SQL Server 2008 создаются для конкретных пакетов обновления SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 3 (SP3) к установке SQL Server 2008 с пакетом обновления 3 (SP3). По умолчанию любое исправление, предоставляемое в пакете обновления SQL Server, входит в следующий пакет обновления SQL Server.

Накопительный пакет обновления 11 для SQL Server 2008 R2

Исправление этой проблемы было впервые выпущено в накопительном пакете обновления 11. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, см. в следующей статье базы знаний Майкрософт:

2633145 накопительный пакет обновления 11 для SQL Server 2008 R2

                 Примечание Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2. Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

981356 сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2

Накопительный пакет обновления 4 для SQL Server 2008 R2 с пакетом обновления 1 (SP1)

Исправление этой проблемы было впервые выпущено в накопительном пакете обновления 4. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 с пакетом обновления 1 (SP1), см. в следующей статье базы знаний Майкрософт:

2633146 накопительный пакет обновления 4 для SQL Server 2008 R2 с пакетом обновления 1 (SP1)

                 Примечание Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2 с пакетом обновления 1 (SP1). Рекомендуется применить последний выпуск исправления, содержащий это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:

2567616 сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 1 (SP1)

SQL Server 2012

SQL Server 2012 содержит изменения кода для этих исправлений. Флаги трассировки 2562 и 2549, как описано ниже, также применяются к SQL Server 2012. Однако исправление для уменьшения состязаний на DBCC_MULTIOBJECT_SCANNER кратковременной блокировки не требует флага трассировки 2562 в SQL Server 2012 г. Эти изменения были включены по умолчанию в SQL Server 2012 г.

Дополнительные сведения

В этом накопительном обновлении представлены два флага трассировки, которые повысят использование ресурсов операций ввода-вывода на диске при выполнении пользователем команды DBCC CHECKDB . Хотя эти улучшения предназначены только для PHYSICAL_ONLY параметра, они также могут повысить общую производительность команд DBCC CHECKDB , которые не используют параметр PHYSICAL_ONLY .

Флаг трассировки 2562

Этот флаг трассировки включает следующие изменения:

  • Выполните команду DBCC CHECKDB в одном пакете независимо от количества индексов в базе данных. По умолчанию команда DBCC CHECKDB пытается свести к минимуму ресурсы tempdb , ограничивая количество создаваемых индексов или фактов с помощью концепции batches. Этот флаг трассировки принудительно выполняет обработку в один пакет.
  • Улучшение внутренней обработки для определения страниц для чтения из базы данных. Это уменьшает состязание на DBCC_MULTIOBJECT_SCANNER защелку.

Одним из последствий использования этого флага трассировки является увеличение требований к пространству для базы данных tempdb . База данных Tempdb может увеличиться до 5 или более процентов пользовательской базы данных, обрабатываемой командой DBCC CHECKDB . Поэтому при использовании этого флага трассировки рекомендуется предварительно задать размер базы данных tempdb не менее 5 % от размера базы данных, чтобы избежать автоматического роста, что может замедлить производительность команды DBCC CHECKDB .

Примечание Флаг трассировки 2562 — это флаг трассировки на уровне сеанса. Его можно включить на уровне сеанса.

Флаг трассировки 2549

Команда DBCC CHECKDB создает внутренний список страниц для чтения на каждом уникальном диске во всех файлах базы данных. Эта логика определяет уникальные диски на основе буквы диска физического имени каждого файла. Если базовые диски действительно уникальны, если буквы диска или нет, команда DBCC CHECKDB будет обрабатывать их как один диск. Если этот флаг трассировки включен, предполагается, что каждый файл базы данных находится на уникальном диске. Не используйте этот флаг трассировки, если вы не знаете, что каждый файл основан на уникальном физическом диске.

Примечание Флаг трассировки 2549 — это глобальный флаг трассировки. Чтобы включить его, необходимо использовать его в качестве параметра запуска или использовать DBCC TRACEON (2549,-1).

Хотя эти флаги трассировки повышают производительность команд DBCC CHECKDB , предназначенных для использования параметра DBCC CHECKDB , некоторые пользователи могут не увидеть никакого улучшения производительности. Хотя эти флаги трассировки улучшают использование ресурсов операций ввода-вывода на диске, базовая производительность ресурсов диска может ограничить общую производительность команды DBCC CHECKDB .

Имейте в виду следующие ограничения:

  • Улучшения производительности не предназначены для повышения производительности при использовании параметра восстановления .
    Например, улучшения производительности не предназначены для повышения производительности при использовании параметра REPAIR_ALLOW_DATA_LOSS .
  • Улучшения не влияют на команду DBCC CHECKALLOC .
  • Эти улучшения могут помочь в повышении производительности команды DBCC CHECKTABLE для индексов с большим количеством страниц. Однако улучшения не предназначены для повышения производительности команды DBCC CHECKTABLE .

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».