Что такое части таблицы в ClickHouse?
Данные каждой таблицы ClickHouse из семейства движков MergeTree хранятся на диске в виде набора неизменяемых
частей данных.
Чтобы проиллюстрировать это, используем эту таблицу (адаптированную из датасета с ценами на недвижимость в Великобритании), в которой содержатся данные о дате продажи, городе, улице и цене проданной недвижимости в Соединённом Королевстве:
Когда сервер ClickHouse обрабатывает пример вставки 4 строк (например, с помощью оператора INSERT INTO), показанный на диаграмме выше, он выполняет несколько шагов:
1
Сортировка
Строки сортируются по ключу сортировки таблицы
(town, street), и для отсортированных строк создается разреженный первичный индекс.2
Разделение
Отсортированные данные разбиваются на столбцы.
3
Сжатие
Каждый столбец сжимается.
4
Запись на диск
Сжатые столбцы сохраняются как бинарные файлы столбцов в новом каталоге, соответствующем части данных этой вставки. Разреженный первичный индекс также сжимается и сохраняется в том же каталоге.
Слияние частей
Чтобы свести к минимуму количество исходных частей и накладные расходы на слияние, клиентам баз данных рекомендуется либо выполнять пакетную вставку кортежей, например по 20 000 строк за раз, либо использовать асинхронный режим вставки, при котором ClickHouse буферизует строки из нескольких входящих INSERT в одну и ту же таблицу и создает новую часть только после того, как размер буфера превысит настраиваемый порог или истечет тайм-аут.
Мониторинг частей таблицы
_part: