remote_servers) кластера без создания таблицы Distributed. Запрос выполняется только к одной реплике каждого сегмента.
Функция clusterAllReplicas — то же, что и cluster, но запросы выполняются ко всем репликам. Каждая реплика в кластере используется как отдельный сегмент/соединение.
Все доступные кластеры перечислены в таблице system.clusters.
Синтаксис
Аргументы
| Аргументы | Тип |
|---|---|
cluster_name | Имя кластера, используемое для формирования набора адресов и параметров подключения к удалённым и локальным серверам; если не указано, устанавливается default. |
db.table or db, table | Имя базы данных и таблицы. |
sharding_key | Ключ сегментирования. Необязательный. Должен быть указан, если в кластере более одного сегмента. |
Возвращаемое значение
Использование макросов
cluster_name может содержать макросы — подстановки в {}. Подставляемое значение берётся из раздела macros файла конфигурации сервера.
Пример:
Использование и рекомендации
cluster и clusterAllReplicas менее эффективно, чем создавать таблицу Distributed, поскольку в этом случае подключение к серверу заново устанавливается для каждого запроса. При обработке большого числа запросов всегда заранее создавайте таблицу Distributed и не используйте табличные функции cluster и clusterAllReplicas.
Табличные функции cluster и clusterAllReplicas могут быть полезны в следующих случаях:
- Доступ к определённому кластеру для сравнения данных, отладки и тестирования.
- Запросы к различным кластерам и репликам ClickHouse в исследовательских целях.
- Нечастые распределённые запросы, выполняемые вручную.
host, port, user, password, compression, secure, берутся из раздела конфигурации <remote_servers>. Подробности см. в разделе движок Distributed.