Ограничена ли потеря производительности захвата данных только таблицами с CDC? - PullRequest
11 голосов
/ 06 декабря 2010

Я прочитал, что включение Change Data Capture, очевидно, влияет на производительность базы данных.Будет ли эта потеря производительности влиять только на таблицы, для которых включен CDC, или она будет влиять на все действия в базе данных

В моей ситуации я использую SSIS и большой объем данных перемещается в промежуточную базу данных и из нее.У меня также есть некоторые таблицы поиска в системе, которые используются для преобразований.Я надеюсь использовать CDC в качестве средства для аудита изменений только в этих справочных таблицах (не импортированных данных).Основные запросы, которые я выполняю как часть ETL, обращаются к этим ссылочным таблицам, но не меняют их, поэтому я пытаюсь выяснить, будет ли заметный скачок производительности?

Спасибо

1 Ответ

28 голосов
/ 06 декабря 2010

Ответ на этот вопрос будет и да, и нет.

Нет, потому что

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

Не отслеживаемые таблицы, по-видимому, не участвуют в отслеживании данных.

Да, поскольку

Источником данных изменений для сбора данных изменений является журнал транзакций SQL Server.Поскольку вставки, обновления и удаления применяются к отслеживаемым исходным таблицам, записи, описывающие эти изменения, добавляются в журнал.Журнал служит входом для процесса захвата изменений данных.Это читает журнал и добавляет информацию об изменениях в таблицу изменений, связанную с отслеживаемой таблицей.

Поскольку источником изменений является журнал транзакций, для распространения изменений требуется, чтобы экземпляры захвата считывали и интерпретировалижурнал транзакций (отказ от ответственности: моя интерпретация вещей) .Простое включение CDC влияет на производительность всей вашей базы данных.

Рекомендации

Хранилище:

  • При планировании сбора данных измененийархитектуре, примите во внимание значительное увеличение размера журнала и операций ввода-вывода тома журнала.
  • Рассмотрите возможность указания файловой группы в sys.sp_cdc_enable_table.
  • Прежде чем приступать к изменению файловой группы по умолчанию для базы данныхвыполнить sys.sp_cdc_enble_db, чтобы метаданные захвата данных и особенно cdc.lsn_time_mappings находились в другой файловой группе, чем PRIMARY.

Поведение рабочей нагрузки:

  • Попытайтесь избежать сценариев, когдастрока должна обновляться сразу после вставки.
  • Старайтесь не использовать сбор данных изменений для записи изменений в таблицы, в которых часто происходят большие транзакции обновления.

Изменение параметров захвата данных:

  • Всегда сокращайте список столбцов, захваченных при изменении сбора данных, доy столбцы, которые вам действительно нужно отслеживать.
  • Если вам не требуется поддержка сетевых изменений, установите для @ значение 0.
  • Используйте, чтобы узнать, может ли сбор данных изменений соответствовать вашей рабочей нагрузке.
  • Если сбор данных изменений не может соответствовать вашей рабочей нагрузке, измените параметры задания сканирования и перезапустите задание сканирования.

Заключение
ЕслиВаш сервер в настоящее время не имеет проблем с его нагрузкой, я очень сомневаюсь, что вы заметите какие-либо проблемы с производительностью, включающие CDC для редко изменяемых таблиц.

Источники

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...