| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Краткие рекомендации по настройке и оптимизации репликации транзакций По материалам статьи Bren Newman, Xavier Schildwachter и Greg YvkoffЭта статья посвящена повышению производительности и эффективности репликации транзакций MS SQL Server. Повышение производительности репликации Вы можете увеличить производительность всех типов репликации, если будете следовать следующим рекомендациям:
· Оптимизируйте при разработке вашу БД и с точки зрения репликации. Повышение производительности репликации транзакций Вы можете увеличить производительно репликации транзакций, если будете следовать следующим рекомендациям:
· Используйте постоянно запущенный Distribution Agent вместо запуска агента по расписанию. Повышение производительности при применении первоначального моментального снимка Применение первоначального снимка может занимать довольно-таки значительное количество времени, особенно если вы переносите большой объем данных по сети или у вас низкое качество соединения. Следующие примеры показывают увеличение производительности Shapshot-агента при оптимизации параметра -MaxBCPThread и при использование параметра -UseInprocLoader Использование параметра -MaxBCPThread
В репликации транзакций, параметр -MaxBCPThread может быть применен как к Shapshot-агенту, так и к Distribution-агенту.
Данный параметр указывает количество параллельно выполняемых операций bulk-copy. Максимальное количество потоков и
ODBC-соединении, которые могут быть выполнены одновременно - это и есть значение параметра -MaxBCPThread.
Публикация №1
Генерация начального снимка Shapshot Agent'ом Следующие данные были получены на двухпроцессорном сервере: 450 Mhz Xeon, RAM 256Mb. При установленном значение параметра -MaxBCPThreads в "7", время генерации снимка в 1.6 раза происходит быстрее, чем когда данный параметр имеет значение равное "1". На однопроцессорной машине, использование значение "7" для параметра -MaxBCPThreads ускорило генерацию снимка в 1.27 раза относительно результата для значения равного "1". Установка значения "7" на однопроцессорной системе не дает существенных преимуществ, и только больше загружает процессор.
Применение начального снимка Distribution Agent Следующие данные показывают, что на двухпроцессорной машине, при использование значения "7" для параметра -MaxBCPThreads, применение начального снимка происходит в 1.3 раза быстрее, чем при использовании значения равное "1". На однопроцессорной машине, CPU является, скажем так, "узким местом" и изменение данного значения не даст прироста в производительности. При использование значения "7" для параметра -MaxBCPThreads, применение снимка происходит в 1.3 раза быстрее, чем при использовании значения равного "1". Использование двухпроцессорной машины, несомненно, дает больше прирост производительности, чем использование однопроцессорной машины. Применение снимка происходит в 1.75 раз быстрее, чем на однопроцессорной машине.
Использование параметра -UseInprocLoader Данный параметр может быть использован Distribution-агентом во время применения снимка на подписчике. Когда используется указанный параметр, Distribution-агент будет использовать BULK INSERT операции, что уменьшает время, необходимое для применения первоначального снимка на подписчике. Для увеличения производительности репликации в дальнейшем используйте параметр -UseInprocLoader совместно с параметром -MaxBCPThread. Следующий пример показывает публикацию, включающую в себя 10 статей общим объемом 46 мегабайт.
Публикация №2
Когда вы используете только параметр -UseInprocLoader, снимок применяется в 1.4 раза быстрее, чем без использования данного параметра. Когда -UseInprocLoader используется совместно с параметром -MaxBCPThread с установленным значением равным "5", снимок применяется в 2.1 раза быстрее. Время применения снимка на подписчике
В последнем примере вы можете наблюдать явное увеличение производительности. По умолчанию, данный параметр не
используется, потому что он негативно влияет на количество свободной памяти на издателе и пропускную способность
сети. Для начала я бы рекомендовал использовать данный параметр для подписчика с небольшим кол-вом публикаций и
некоторое время понаблюдать за работой сервера. Я использовал данный параметр для подписчика с 2-мя публикациями
по 3 таблицы в одной публикации и с 1 таблицей во второй публикации. При этом количество появления интернет-заказов
в минуту для нашей системы увеличилось приблизительно в 3-3.5 раза. То есть, если раньше время появления заказа в
системе шло со скоростью 1 заказ в 2 минуты (причем по так и не выясненным причинам), то на данный момент это происходит
со скоростью 2-3 заказа в 1 минуту. Использование сжатых моментальных снимков Использование данной опции рекомендуется, когда вы используете pull или удаленного push подписчика. Эта опция также предоставляет дополнительные возможности, когда вы используете для размещения снапшотов FTP. Сжатие файлов моментальных снимков в указанном для хранения снимков пути может уменьшать размер дискового пространства, необходимого для хранения файлов снимков и, в некоторых случаях, может увеличить производительность, когда есть необходимость передать файл снимка по линии с низким качеством связи. Однако, сжатие файлов снимков требует дополнительного расхода ресурсов системы при создании и применении файла моментального снимка. А это, соответственно, может привести к увеличению времени генерации и применения снимка. В публикации №2, состав которой был приведен выше, Shapshot-агент создаёт 20 файлов, включая файлы со схемами данных и файлы данных, общий размер которых составит 130 мегабайт. Если Вы используете сжатие указанных файлов, Shapshot-агент создаст .cab файл размером около 65 мегабайт, фактически подписчику нужно загрузить вдвое меньший файл. Несмотря на это, для хранения сжатых файлов снимков требуется больше места на диске. Сжатые снимки могут занимать больше места на дистрибуторе (сохраняется и сжатый снимок, и обычный снимок), также время генерации файла снимка увеличивается приблизительно в 4.5 раза по сравнению со временем, необходимым для генерации несжатого файла снимка, т.к. оно расходуется на сжатие файла снимка. Использование параллельных процессов для генерации снимка
Когда Вы используете установки по умолчанию для генерации файла снимка, SQL Server накладывает разделяемую блокировку
на все таблицы, включенные в статью для репликации. Это предотвращает изменение данных во время генерации файла снимка.
При параллельных процессах генерации снимка (доступно только для репликации транзакций) также происходит наложение
разделяемой блокировки, но на непродолжительное время, т.е. все пользователи могут спокойно продолжать работать с
данными. |
|
| ||||||||||||||||
|