Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Как работают движки MergeTree, ReplacingMergeTree, SummingMergeTree в ClickHouse?

Вопрос проверяет понимание принципов работы основных движков таблиц ClickHouse и их влияния на производительность запросов.

Короткий ответ

MergeTree — базовый движок ClickHouse, который сортирует данные по ключу партиционирования и индексу. ReplacingMergeTree удаляет дубликаты с одинаковым ключом сортировки во время слияния. SummingMergeTree суммирует числовые значения для строк с одинаковым ключом сортировки. Все движки оптимизируют хранение и ускоряют аналитические запросы.

Длинный ответ

Основы MergeTree

MergeTree — это основной движок таблиц в ClickHouse, предназначенный для высокопроизводительной аналитики. Данные в нём физически разбиваются на части (parts), каждая из которых отсортирована по ключу сортировки (ORDER BY). При вставке новые данные попадают в отдельную часть, а в фоне происходит слияние (merge) мелких частей в более крупные. Это позволяет эффективно сжимать данные и ускорять запросы за счёт использования первичного индекса.

ReplacingMergeTree

Этот движок расширяет MergeTree возможностью удалять дубликаты. Если в таблицу попадают строки с одинаковым значением ключа сортировки, то при слиянии остаётся только последняя версия (по времени вставки или по указанному столбцу версии). Это удобно для хранения последних состояний объектов, например, текущих цен или статусов заказов.

CREATE TABLE prices (
    product_id UInt32,
    price Float64,
    updated_at DateTime
) ENGINE = ReplacingMergeTree(updated_at)
ORDER BY product_id;

INSERT INTO prices VALUES (1, 100, now());
INSERT INTO prices VALUES (1, 110, now() + 10);
-- После слияния останется строка с ценой 110

SummingMergeTree

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

CREATE TABLE page_views (
    date Date,
    page_id UInt32,
    views UInt64
) ENGINE = SummingMergeTree()
ORDER BY (date, page_id);

INSERT INTO page_views VALUES ('2023-01-01', 1, 10);
INSERT INTO page_views VALUES ('2023-01-01', 1, 5);
-- После слияния: (2023-01-01, 1, 15)

Вывод: MergeTree — универсальный выбор для аналитики, ReplacingMergeTree — для дедупликации, SummingMergeTree — для предварительной агрегации. Выбор движка зависит от характера данных и требований к запросам.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • ClickHouse

Ключевые слова

#ClickHouse

#MergeTree

#ReplacingMergeTree

#SummingMergeTree

#storage engine

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.