Войти Регистрация
Data base

120. Ключ сортировки и партиции для таблицы хитов

Средняя

ClickHouse · ClickHouse 26.3

В Метрике почти каждый отчёт — это один счётчик (сайт) за диапазон дат: «просмотры counter 57012 за март». Таблица хитов растёт на миллиарды строк в сутки, и запрос должен читать только свой счётчик.

Нужно выбрать ключ сортировки, партиционирование и выражение для сэмплирования. Типичный запрос: SELECT count() FROM hits WHERE CounterID = 57012 AND EventDate BETWEEN '2026-03-01' AND '2026-03-31'.

В работе: Проектирование таблицы событий под отчёты «по одному клиенту за период».

Как проверяем Движка ClickHouse в браузере пока нет, поэтому здесь не запрос, а выбор решения. Выберите один вариант. После ответа — почему каждый вариант верный или нет. Ответ один на подход: после него показываем разбор.
MergeTreeORDER BYPARTITION BYSAMPLE BYмодель данных

Источник: кейс Яндекса: таблица hits Метрики в примерах документации ClickHouse. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.

Какой вариант таблицы лучше подходит под отчёты «счётчик за период»?

  • ORDER BY (EventTime)
  • PARTITION BY CounterID
  • PARTITION BY месяц, ORDER BY (CounterID, EventDate, intHash32(UserID))
  • ORDER BY (UserID, CounterID, EventDate)
  • PARTITION BY день, ORDER BY (CounterID, EventDate)