2010-12-06 3 views
10

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

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

Thanks

ответ

25

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

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

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

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

Да потому, что

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

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

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

Хранение:

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

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

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

Изменить параметры сбора данных:

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

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

Источники

+1

очень хорошо explained..must заслуживает upvote ... – 2014-04-09 04:13:39