Параллельный снимок в MySQL ClickPipe
В этом документе объясняется, как работает параллельное создание снимка / начальная загрузка в ClickPipe для MySQL, а также рассматриваются параметры снимка, с помощью которых можно управлять этим процессом.
Обзор
Первоначальная загрузка — это первая фаза CDC ClickPipe, в ходе которой ClickPipe синхронизирует исторические данные таблиц исходной базы данных в ClickHouse, а затем начинает CDC. Во многих случаях разработчики выполняют эту операцию в однопоточном режиме. Однако MySQL ClickPipe может распараллеливать этот процесс, что может значительно ускорить первоначальную загрузку.
Столбец ключа партиции
После включения флагa функции вы должны увидеть следующую настройку в окне выбора таблиц ClickPipe (как при создании, так и при редактировании ClickPipe):

MySQL ClickPipe использует столбец в вашей исходной таблице для логического разбиения исходных таблиц на партиции. Этот столбец называется столбцом ключа партиции. Он используется для разделения исходной таблицы на партиции, которые затем могут обрабатываться параллельно ClickPipe.
Столбец ключа партиции должен быть проиндексирован в исходной таблице, чтобы обеспечить значительный прирост производительности. Это можно проверить, выполнив SHOW INDEX FROM <table_name> в MySQL.
Логическое партиционирование
Рассмотрим следующие настройки:

Количество строк в снимке на партицию
Эта настройка определяет, сколько строк приходится на одну партицию. ClickPipe будет считывать исходную таблицу фрагментами такого размера, и фрагменты обрабатываются параллельно в соответствии с заданным уровнем параллелизма начальной загрузки. Значение по умолчанию — 100 000 строк на партицию.
Параллелизм начальной загрузки
Этот параметр определяет, сколько партиций обрабатывается параллельно. Значение по умолчанию — 4, что означает, что ClickPipe будет читать 4 партиции исходной таблицы параллельно. Это значение можно увеличить, чтобы ускорить начальную загрузку, но рекомендуется выбирать его разумно в зависимости от характеристик исходного инстанса, чтобы не перегрузить исходную базу данных. ClickPipe будет автоматически подстраивать количество партиций в зависимости от размера исходной таблицы и числа строк в каждой партиции.
Количество таблиц, обрабатываемых параллельно при создании снимка
Не совсем относится к параллельному снимку, но этот параметр определяет, сколько таблиц обрабатывается параллельно во время начальной загрузки. Значение по умолчанию — 1. Обратите внимание, что это идёт в дополнение к параллелизму партиций, поэтому, если у вас 4 партиции и 2 таблицы, ClickPipe будет читать 8 партиций параллельно.
Мониторинг параллельного снимка в MySQL
Вы можете выполнить SHOW PROCESSLIST в MySQL, чтобы увидеть работу параллельного снимка. ClickPipe создаст несколько подключений к исходной базе данных, каждое из которых будет считывать свою партицию исходной таблицы. Если вы видите запросы SELECT с разными диапазонами, это означает, что ClickPipe читает исходные таблицы. Здесь вы также можете увидеть COUNT(*) и запрос, отвечающий за партиционирование.
Ограничения
- Параметры снимка нельзя изменить после создания ClickPipe. Если вы хотите их поменять, вам нужно создать новый ClickPipe.
- При добавлении таблиц в существующий ClickPipe вы не можете изменить параметры снимка. ClickPipe будет использовать существующие параметры для новых таблиц.
- Столбец ключа партиции не должен содержать значений
NULL, так как они пропускаются логикой партиционирования.