Проблемы производительности системы

Производительность репликации может быть измерена по следующим пяти параметрам:

  • Задержка: время, затрачиваемое на распространение изменения данных между узлами в топологии репликации.

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

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

  • Длительность синхронизации: время, затрачиваемое на выполнение заданной синхронизации.

  • Потребление ресурсов: аппаратные и сетевые ресурсы, используемые для обработки репликации.

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

После того как репликация настроена, рекомендуется сформулировать исходный уровень производительности, который позволит определить, как ведет себя репликация в случае типовой рабочей нагрузки для приложения и топологии. Для определения типовых значений пяти параметров производительности репликации, перечисленных выше, используйте монитор репликации и системный монитор. После определения исходных значений установите пороговые значения и предупреждения в мониторе репликации. Дополнительные сведения см. в разделах Мониторинг производительности с помощью монитора репликации, Настройка пороговых значений и предупреждений в мониторе репликации и Применение предупреждений по событиям агента репликации. Дополнительные сведения об инструментах, которые можно использовать для устранения неполадок репликации, см. в разделе Средства устранения неполадок (репликация).

Объяснение и действия пользователя

На производительность репликации влияют следующие факторы:

  • серверное и сетевое аппаратное обеспечение;

  • структура базы данных;

  • конфигурация распространителя;

  • структура и параметры публикации;

  • структура фильтра и его использование;

  • параметры подписок;

  • параметры моментального снимка;

  • параметры агентов;

  • обслуживание.

Если возникла проблема производительности, рекомендуется ознакомиться с советами в следующих разделах и внести такие изменения, которые позволят устранить причины появившихся проблем. Например:

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

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

Все типы репликации

Для всех типов репликации должны быть рассмотрены следующие аспекты. Дополнительные сведения см. в разделе Повышение общей производительности репликации.

  • Сервер и сеть

    • Установите минимальное и максимальное количество памяти, выделенное для Microsoft SQL Server Database Engine.

    • Обеспечьте надлежащее размещение файлов базы данных и файлов журналов. Используйте отдельный диск для журнала транзакций всех баз данных, задействованных в репликации.

    • Рассмотрите возможность добавления памяти на серверы, участвующие в репликации, особенно, на сервер распространителя.

    • Используйте многопроцессорные компьютеры.

    • Используйте сеть с высокой пропускной способностью. Если у сети низкая пропускная способность, установите подходящие настройки сети и параметры агента. Дополнительные сведения см. в разделе Медленная сеть — источник проблем.

  • Структура базы данных

    • Следуйте рекомендациям по разработке баз данных.

    • Рассмотрите возможность установки параметра READ_COMMITTED_SNAPSHOT базы данных.

    • Осмотрительно используйте логику приложения в триггерах.

    • Ограничьте использование типов данных больших объектов.

  • Структура и параметры публикации

    • Публикуйте только нужные данные.

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

    • Используйте фильтры обдуманно.

    • Уменьшите уровни детализации агентов репликации за исключением начального периода проверки, наблюдения или отладки.

  • Параметры подписок

    • Если имеется большое число подписчиков, используйте подписки по запросу.

    • Рассмотрите возможность повторной инициализации подписки, если данные у подписчиков чрезмерно устарели.

  • Параметры моментального снимка

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

    • Используйте для публикации одну папку моментальных снимков.

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

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

    • Используйте альтернативную папку моментальных снимков и сжатые моментальные снимки, которые хранятся на съемных носителях при работе в сетях с малой полосой пропускания.

    • Используйте параметр –MaxBCPThreads агента моментальных снимков, агента слияния и агента распространителя. Используйте параметр –UseInprocLoader агента распространителя и агента слияния.

Репликация транзакций

Для репликации транзакций должны быть рассмотрены следующие аспекты. Дополнительные сведения см. в разделе Повышение производительности репликации транзакций.

  • Структура базы данных

    • Минимизируйте размер транзакций в структуре приложения.
  • Конфигурация распространителя

    • Настройте распространитель на выделенном сервере.

    • Установите соответствующий размер для базы данных распространителя.

  • Структура и параметры публикации

    • Реплицируйте выполнение хранимых процедур при осуществлении пакетных обновлений опубликованных таблиц.

    • Распределите статьи по нескольким публикациям.

  • Параметры подписок

    • Используйте независимые агенты вместо общих агентов, если на одном и том же издателе имеется несколько публикаций (поведение по умолчанию).

    • Выполняйте агенты в непрерывном режиме вместо запуска по часто повторяющимся расписаниям.

  • Параметры агентов

    • Используйте параметр –MaxCmdsInTran для агента чтения журнала.

    • Используйте параметр –SubcriptionStreams для агента распространителя.

    • Увеличьте значение параметра -ReadBatchSize для агента чтения журнала.

    • Увеличьте значение параметра -CommitBatchSize для агента распространителя.

    • Уменьшите значение параметра -PollingInterval для агента чтения журнала.

Репликация слиянием

Для репликации слиянием должны быть рассмотрены следующие аспекты. Дополнительные сведения см. в разделе Повышение производительности репликации слиянием.

  • Структура базы данных

    • Столбцы индекса, применяемые в фильтрах строк и фильтрах соединения.

    • Примите во внимание излишне нормализованные таблицы, которые содержат типы данных больших объектов.

  • Разработка публикации

    • Используйте публикации с уровнем совместимости 90RTM (SQL Server 2005) или более поздние версии.

    • Используйте соответствующие параметры хранения публикации.

    • При работе с таблицами, которые изменяются только на издателе, используйте статьи, доступные только для загрузки.

  • Структура фильтра и его использование

    • Ограничьте сложность предложений в фильтрах строк.

    • Используйте предварительно вычисляемые секции с параметризованными фильтрами (применяются по умолчанию).

    • Используйте неперекрывающиеся секции, если данные фильтруются, но не являются общими для пользователей.

    • Не создавайте сложные иерархии фильтров соединения.

    • Присвойте параметру join_unique_key значение 1, если это допустимо логически.

  • Соображения о предварительно вычисляемых секциях

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

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

  • Вопросы использования подписок

    • Разнесите расписания синхронизации подписок.
  • параметры агентов

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

    • Создайте столбец ROWGUIDCOL в больших таблицах до того, как создавать исходный моментальный снимок.

    • Выполните предварительное создание моментальных снимков и/или разрешите подписчикам запрашивать создание и применение моментального снимка при первоначальной синхронизации.

  • Обслуживание

    • При необходимости выполните повторную индексацию системных таблиц репликации слиянием.

    • Наблюдайте за производительностью синхронизации с помощью вкладки Журнал синхронизации монитора репликации.

См. также

Основные понятия