Параллельное копирование
Сервис Data Transfer может одновременно задействовать для трансфера несколько потоков исполнения. Это существенно увеличивает пропускную способность трансфера и позволяет использовать для него больший объем ресурсов. Параллельное копирование применяется для всех видов копирования в трансферах типа Копирование и Копирование и репликация, находящихся в статусе Копируется.
Чтобы включить параллельное копирование, укажите его настройки. Настройки параллельного копирования рекомендуется подбирать для каждого трансфера отдельно.
Источники, которые поддерживают параллельное копирование одной таблицы
Возможности масштабирования зависят от типа базы-источника:
- Источники PostgreSQL, MongoDB и Greenplum® поддерживают разделение таблиц на части и параллельное копирование данных из одной таблицы. Для PostgreSQL первичный ключ должен быть типа
serial
. - Источники OpenSearch и Elasticsearch поддерживают параллельное копирование данных из одного индекса.
- Источники ClickHouse® поддерживают параллельное копирование по партициям. Для этого таблица должна иметь несколько партиций. Таблица из одной партиции будет скопирована в один поток. Параллельное копирование доступно только для трансферов из ClickHouse® в ClickHouse®.
- Источник Yandex Object Storage поддерживает параллельное копирование данных из одного каталога.
Прочие источники поддерживают параллельное копирование нескольких таблиц одновременно (без распараллеливания внутри одной таблицы).
Особенности параллельного копирования Greenplum®
Сервис подключается напрямую к сегментам кластера Greenplum® и переносит данные из выбранной таблицы параллельно из всех сегментов. Консистентность данных в каждом сегменте обеспечивается механизмом Snapshot isolation
Настройки
Настройки копирования → Настройки параллельного копирования:
-
Количество воркеров — количество воркеров, которые будут параллельно запущены для копирования данных. Каждый воркер запускается на независимой виртуальной машине с собственными ресурсами CPU и RAM и собственным сетевым подключением.
-
Количество потоков — количество потоков, которое будет запущено в каждом воркере. Каждый поток запускается в отдельном контейнере на виртуальной машине воркера и копирует одну таблицу или ее часть (в зависимости от типа источника).
Подробнее о настройке воркеров и потоков см. в рекомендациях.
Рекомендации по параллельному копированию
Убедитесь, что для вашего трансфера есть настройки параллельного копирования.
Параллельное копирование помогает ускорить перенос данных, только если скорость трансфера достаточная. Она зависит от следующих факторов:
- скорость чтения из базы-источника;
- скорость обработки данных сервисом Data Transfer;
- скорость вставки данных в базу-приемник.
Чтобы проверить скорость трансфера, посмотрите графики сервиса Yandex Monitoring. Скорость считается достаточной, если выполняются условия:
-
На графиках кластера-источника и кластера-приемника потребление таких ресурсов, как CPU, RAM или объем диска, не приближается к предельным значениям.
-
График трансфера «Target response time [s]» показывает, что 95% записей выполняются быстрее, чем за секунду.
Для ClickHouse®-приемника скорость приема данных регулируется настройкой эндпоинта-приемника Интервал записи. Значение может превышать 1 секунду. В таком случае график трансфера «Target response time [s]» должен показывать, что 95% записей выполняются быстрее, чем время, указанное в настройке Интервал записи.
При параллельном копировании вы выбираете количество воркеров и количество потоков в воркере. Чем выше будут значения, тем больше будут производительность трансфера, количество сетевых соединений и нагрузка трансфера на источник и приемник. Эти показатели увеличиваются пропорционально числу воркеров, умноженному на число потоков внутри воркера.
Чтобы добиться оптимальной производительности и нагрузки, проверьте работу трансфера при разных настройках параллельного копирования. В качестве начальных значений используйте 2 воркера и 4 потока внутри воркера. Они ускоряют копирование примерно в 8 раз. Дальше следите за трансфером и следуйте рекомендациям:
-
Если скорость копирования недостаточная и у источника и приемника есть свободные ресурсы, увеличьте количество воркеров. Проверить скорость копирования можно на графике трансфера «Target response time [s]», наличие свободных ресурсов — на графиках потребления ресурсов в кластерах.
-
Если наблюдается недопустимо высокая нагрузка на источник или приемник, то остановите копирование, уменьшите количество воркеров и запустите трансфер снова. Проверить нагрузку можно на графиках потребления ресурсов в кластерах.
-
Если существенно увеличилось время записи в приемник, то остановите копирование, уменьшите количество воркеров и запустите трансфер снова. Проверить скорость записи можно на графике трансфера «Target response time [s]».
-
Если появляется ошибка вида
Instance was restarted
, уменьшите количество потоков внутри воркера и запустите трансфер снова.
Если возникают сложности с настройкой, обратитесь в техническую поддержку
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.