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