Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Группы ресурсов
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
Взаимодействие между узлами (Interconnect, IC) — это основной механизм обмена данными между сегментами при выполнении распределённых запросов в YMatrix. YMatrix поддерживает три типа IC.
ic-tcp: реализован поверх TCP.ic-udpifc: реализован поверх UDP и обеспечивает надёжность, аналогичную TCP.ic-tunnel: представлен в YMatrix 6.7.1. Разработан для преодоления ограничений традиционных типов IC и обеспечивает повышенную совместимость с окружением и лучшую производительность.| Тип IC | Ключевые характеристики | Типичные сценарии использования | Способ настройки | Поддерживаемые версии |
|---|---|---|---|---|
ic-tcp |
— Наивысшая теоретическая производительность (на основе TCP);— Подвержен зависаниям запросов;— Ограничен количеством системных TCP-портов; слабая масштабируемость в крупных кластерах или при высокой параллельности. | — Малые кластеры с хорошими сетевыми условиями и небольшим числом узлов;— Сценарии, чувствительные к задержкам и требующие пиковой производительности. | — Установите GUC gp_interconnect_type=tcp.— Настройте глобально через gpconfig.— Установите на уровне сеанса: PGOPTIONS="-c gp_interconnect_type=tcp" psql. |
Все версии |
ic-udpifc |
— Чувствителен к сетевым условиям: высокая задержка или малый MTU значительно снижают производительность. | — OLAP-запросы;— Сети с низкой задержкой и большим MTU;— Общие рабочие нагрузки с большими объёмами данных — предпочтителен, за исключением миграции данных (очень высокий объём), где производительность ic-udpifc резко падает. |
— Установите GUC gp_interconnect_type=udpifc.— Настройте глобально через gpconfig.— Установите на уровне сеанса: PGOPTIONS="-c gp_interconnect_type=udpifc" psql. |
Все версии |
ic-tunnel |
— Новый тип IC, разработанный для максимальной совместимости с окружением;— Не требует ручной настройки;— Автоматически определяет топологию кластера и адаптируется при масштабировании (вверх/вниз) или сбое master → standby. | — Крупные кластеры, где ic-tcp может зависать или останавливаться из-за количества узлов;— Миграция данных, особенно когда производительность ic-udpifc резко снижается;— Детализированные запросы со множеством столбцов, где векторизованный motion работает неэффективно;— Окружения с плохими сетевыми условиями или ограничением скорости установки соединений. |
— Установите GUC gp_interconnect_type=tunnel.— Настройте глобально через gpconfig.— Установите на уровне сеанса: PGOPTIONS="-c gp_interconnect_type=tunnel" psql. |
6.7.1 и новее |
Примечание!
ic-tunnelдемонстрирует высокую производительность в большинстве сценариев. Однако в следующих специфических случаях рекомендуется оценить традиционные типыic-tcpилиic-udpifc, чтобы достичь пиковой производительности:
- Развертывания с одним узлом
- OLTP-нагрузки с точечными запросами
ic-tunnelic-tunnel поддерживает следующие GUC:
mx_interconnect_compress: управляет включением сжатия данных.
— При значении on сжатие активируется внутри ic-tunnel, что значительно снижает сетевой трафик между узлами за счёт увеличения загрузки CPU процессов QE. Рекомендуется при передаче больших объёмов данных (например, миграция) или в средах с ограниченной пропускной способностью.
matrix.ic_tunnel_port_delta: задаёт смещение порта прослушивания ic-tunnel. Значение по умолчанию — 200.
— Порт сервера ic-tunnel вычисляется как postmaster-port + delta. Пользователь должен гарантировать, что полученный порт уникален и не занят.
ic-tunnel использует прокси-модель. Каждый postmaster сегмента запускает отдельный серверный процесс ic-tunnel. Вся сетевая коммуникация между процессами QE проходит через этот сервер. Между любыми двумя сегментами требуется лишь одно постоянное TCP-соединение.
Список серверных процессов ic-tunnel можно получить командой ps:
$ ps -ef | grep ic-tunnel
u 2769149 2769130 0 03:33 ? 00:00:03 postgres: 4004, ic-tunnel server
u 2769150 2769129 0 03:33 ? 00:00:03 postgres: 4003, ic-tunnel server
u 2769164 2769128 0 03:33 ? 00:00:03 postgres: 4002, ic-tunnel server
u 2769195 2769170 0 03:33 ? 00:00:02 postgres: 4000, ic-tunnel server
При включённом параметре hot_standby = on серверные процессы ic-tunnel также запускаются на standby- и mirror-узлах.
Каждый серверный процесс ic-tunnel требует выделенного TCP-порта прослушивания. На одном хосте все такие порты должны быть различны. Порт вычисляется по формуле:
ic-tunnel-server-port := postmaster-port + delta
Порт определяется автоматически путём прибавления фиксированного смещения (delta) к порту прослушивания postmaster. Ручная настройка не требуется — однако пользователь обязан обеспечить, чтобы вычисленный порт был одновременно уникальным и свободным.
Смещение управляется GUC matrix.ic_tunnel_port_delta, принимающим любое целое число (положительное или отрицательное). Значение по умолчанию — 200.
ic-tunnel использует новую архитектуру «горячей» замены, построенную на базе недавно введённого в YMatrix фреймворка плагинов IC. Реализация предоставляется разделяемой библиотекой matrixts.so. Поэтому:
ic-tunnel параметр shared_preload_libraries должен включать matrixts. matrixts не требуется.Примечание!
Еслиgp_interconnect_typeустановлен вtunnel, ноshared_preload_librariesне содержитmatrixts, кластер запускается успешно и клиентские сеансы могут подключиться. В этом случае плагин IC автоматически переходит на резервный режимic-tcp, и в логе базы данных появляется предупреждение видаWARNING: ic: unknown interconnect type "tunnel", fallback to "tcp" temporarily. Такой переход гарантирует работоспособность кластера при некорректной конфигурации, однако администратору следует оперативно исправить настройку.