Параллельный снимок в MySQL ClickPipe
Этот документ объясняет параллелизацию снимка/начальной загрузки в MySQL ClickPipe и обсуждает параметры снимка, которые можно использовать для его управления.
Обзор
Начальная загрузка — это первая фаза CDC ClickPipe, где ClickPipe синхронизирует исторические данные таблиц из исходной базы данных в ClickHouse, прежде чем начать CDC. В большинстве случаев разработчики делают это в однопоточном режиме. Тем не менее, MySQL ClickPipe может параллелизировать этот процесс, что может значительно ускорить начальную загрузку.
Колонка ключа партиции
После активации флага функции вы должны увидеть следующую настройку в выборщике таблиц 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 будет использовать существующие параметры для новых таблиц.
- Колонка ключа партиции не должна содержать
NULL
, так как они будут пропускаться логикой партиционирования.