Движок таблиц JOIN
Необязательная подготовленная структура данных для использования в 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
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: