Перейти к основному содержимому
Перейти к основному содержимому

Движок таблиц Объединение

Допустимая подготовленная структура данных для использования в JOIN операциях.

примечание

Это не статья о самом JOIN условии.

Создание таблицы

Смотрите подробное описание запроса CREATE TABLE.

Параметры движка

join_strictness

join_strictnessСтрогость JOIN.

join_type

join_typeТип JOIN.

Ключевые столбцы

k1[, k2, ...] – Ключевые столбцы из условия USING, по которым выполняется операция JOIN.

Введите параметры join_strictness и join_type без кавычек, например, Join(ANY, LEFT, col1). Они должны соответствовать операции JOIN, для которой будет использоваться таблица. Если параметры не совпадают, ClickHouse не выдает исключение и может вернуть некорректные данные.

Специфика и рекомендации

Хранение данных

Данные таблицы Join всегда находятся в оперативной памяти. При вставке строк в таблицу ClickHouse записывает блоки данных в директорию на диске, чтобы их можно было восстановить при перезагрузке сервера.

Если сервер перезапускается некорректно, блок данных на диске может быть потерян или поврежден. В этом случае вам может потребоваться вручную удалить файл с поврежденными данными.

Выборка и вставка данных

Вы можете использовать запросы INSERT для добавления данных в таблицы с движком Join. Если таблица была создана с ANY строгостью, данные для дублирующих ключей игнорируются. При ALL строгости все строки добавляются.

Основные сценарии использования таблиц с движком Join следующие:

  • Разместите таблицу с правой стороны в условии JOIN.
  • Вызовите функцию joinGet, которая позволяет извлекать данные из таблицы так же, как из словаря.

Удаление данных

Запросы ALTER DELETE для таблиц с движком Join реализуются как мутации. Мутация DELETE читает отфильтрованные данные и перезаписывает данные в оперативной памяти и на диске.

Ограничения и настройки

При создании таблицы применяются следующие настройки:

join_use_nulls

join_use_nulls

max_rows_in_join

max_rows_in_join

max_bytes_in_join

max_bytes_in_join

join_overflow_mode

join_overflow_mode

join_any_take_last_row

join_any_take_last_row

join_use_nulls

persistent

Отключает долговечность для движков таблиц Join и Set.

Снижает накладные расходы на I/O. Подходит для сценариев, стремящихся к производительности и не требующих постоянства.

Возможные значения:

  • 1 — Включено.
  • 0 — Отключено.

Значение по умолчанию: 1.

Таблицы с движком Join нельзя использовать в операциях GLOBAL JOIN.

Движок Join позволяет указать настройку join_use_nulls в операторе CREATE TABLE. Запрос SELECT должен иметь такое же значение join_use_nulls.

Примеры использования

Создание таблицы на левой стороне:

Создание таблицы Join на правой стороне:

Объединение таблиц:

В качестве альтернативы вы можете извлечь данные из таблицы Join, указав значение ключа объединения:

Удаление строки из таблицы Join: