ClickHouse/docs/ru/sql-reference/table-functions/cluster.md

59 lines
4.0 KiB
Markdown
Raw Normal View History

---
toc_priority: 50
toc_title: cluster
---
# cluster, clusterAllReplicas {#cluster-clusterallreplicas}
2021-08-16 23:00:38 +00:00
Позволяет обратиться ко всем шардам существующего кластера, который сконфигурирован в секции `remote_servers` без создания таблицы типа [Distributed](../../engines/table-engines/special/distributed.md). В запросе используется одна реплика каждого шарда.
2021-08-16 23:00:38 +00:00
Функция `clusterAllReplicas` работает также как `cluster`, но каждая реплика в кластере используется как отдельный шард/отдельное соединение.
2021-08-16 23:00:38 +00:00
!!! note "Примечание"
2021-08-17 01:54:48 +00:00
Все доступные кластеры перечислены в таблице [system.clusters](../../operations/system-tables/clusters.md).
2021-08-16 23:00:38 +00:00
**Синтаксис**
``` sql
2021-08-16 23:00:38 +00:00
cluster('cluster_name', db.table[, sharding_key])
cluster('cluster_name', db, table[, sharding_key])
clusterAllReplicas('cluster_name', db.table[, sharding_key])
clusterAllReplicas('cluster_name', db, table[, sharding_key])
```
**Аргументы**
- `cluster_name` имя кластера, который обозначает подмножество адресов и параметров подключения к удаленным и локальным серверам, входящим в кластер.
- `db.table` или `db`, `table` - имя базы данных и таблицы.
2021-08-17 23:03:46 +00:00
- `sharding_key` - ключ шардирования. Необязательный аргумент. Указывается, если данные добавляются более чем в один шард кластера.
2021-08-16 23:00:38 +00:00
**Возвращаемое значение**
Набор данных из кластеров.
**Использование макросов**
`cluster_name` может содержать макрос — подстановку в фигурных скобках. Эта подстановка заменяется на соответствующее значение из секции [macros](../../operations/server-configuration-parameters/settings.md#macros) конфигурационного файла .
2021-08-16 23:00:38 +00:00
Пример:
```sql
SELECT * FROM cluster('{cluster}', default.example_table);
```
2021-08-16 23:00:38 +00:00
**Использование и рекомендации**
Использование табличных функций `cluster` и `clusterAllReplicas` менее оптимально, чем создание таблицы типа `Distributed`, поскольку в этом случае при каждом новом запросе устанавливается новое соединение с сервером. При обработке большого количества запросов всегда создавайте `Distributed` таблицу заранее и не используйте табличные функции `cluster` и `clusterAllReplicas`.
Табличные функции `cluster` and `clusterAllReplicas` могут быть полезны в следующих случаях:
- Чтение данных из конкретного кластера для сравнения данных, отладки и тестирования.
- Запросы к разным ClickHouse кластерам и репликам в целях исследования.
- Нечастых распределенных запросов которые делаются вручную.
Настройки соединения `user`, `password`, `host`, `post`, `compression`, `secure` берутся из секции `<remote_servers>` файлов конфигурации. См. подробности в разделе [Distributed](../../engines/table-engines/special/distributed.md)
2021-08-16 23:00:38 +00:00
**См. также**
2020-10-13 17:23:29 +00:00
- [skip_unavailable_shards](../../operations/settings/settings.md#settings-skip_unavailable_shards)
- [load_balancing](../../operations/settings/settings.md#settings-load_balancing)