Табличный движок Join
Дополнительная подготовленная структура данных для использования в операциях JOIN.
В ClickHouse Cloud, если ваш сервис был создан на версии раньше 25.4, необходимо установить параметр compatibility не ниже 25.4, выполнив команду SET compatibility=25.4.
Создание таблицы
См. подробное описание запроса 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
max_rows_in_join
max_bytes_in_join
join_overflow_mode
join_any_take_last_row
join_use_nulls
Persistent
Отключает персистентность для движков таблиц Join и Set.
Снижает нагрузку на подсистему ввода-вывода. Подходит для сценариев, ориентированных на производительность и не требующих персистентности.
Возможные значения:
- 1 — включено.
- 0 — выключено.
Значение по умолчанию: 1.
Таблицы с движком Join не могут использоваться в операциях GLOBAL JOIN.
Движок Join позволяет указать настройку join_use_nulls в операторе CREATE TABLE. Запрос SELECT должен иметь то же значение join_use_nulls.
Примеры использования
Создание левой таблицы:
Создание правой таблицы для операции JOIN:
Объединение таблиц:
В качестве альтернативы вы можете получить данные из таблицы Join, указав значение ключа соединения:
Удаление строки из таблицы Join: