TGViewer
Через тернии к Визам Через тернии к Визам @data2viz · 699 subscribers
Post #30 568
ClickHouse. База. #1.
Сортировка (aka primary key).
Одна из важнейших идей, как ускорить ваши дэшики.
Я всем объясняю сортировку на примере библиотеки.
Если ты придёшь в библиотеку и попросишь Шолохова и Булгакова, то библиотекарь пойдет до индекса букв Б и Ш соответственно и внутри быстренько найдет нужного тебе автора. Библиотекарь не будет перебирать все книги, это же очевидно.

То же самое надо сделать и в КХ для быстрого отклика дэша под конкретную историю.
Например, хотим быстро искать товары по брендам, мы создаем таблицу goods и указываем ORDER BY brand_name при создании

CREATE TABLE default.goods (
)
ENGINE = ReplicatedMergeTree('/data2viz/{shard}', '{replica}')
ORDER BY brand_name

Тогда при записи в таблицу данных КХ будет сортировать вставляемые записи по brand_name и записывать в блоки (гранулы):
- вот тут лежат значения от Bosch до Bose
- а вот тут от Apple до Ariston
по сути, вешая ярлычки на блоки данных.

И когда придет запрос с WHERE brand_name = 'LEGO' из всех блоков выберутся только те, которые подходят под условие попадания ярлычка от и до. То есть вместо FULL SCAN будет выбрано 1/100 или даже 1/1000 строк, неплохо?

Самая важная вещь - понять, как отсортировать табличку для вашего бизнеса и дэша.

Как выбирать поле сортировки с точки зрения техники?
1) Которое убирает наибольшее количество строк на примерно равнозначные множества
2) Которое будет сонаправлено другим полям, чтобы лучше сжать другие колонки на диске (влияет на I/O)

Как сортировать с точки зрения бизнеса?
1) Как у вас поделена ответственность в бизнесе за цифры между людьми / Категориями товаров?
2) Как у вас смотрят и принимают решения по конкретному региону, группе товаров?
3) Сколько людей смотрят дэш и по каким пользовательским историям?

Сортировка после запуска дэша
1) Выберите логи по людям, дэшам, чартам
2) распарсите логи и отберите самые частые в WHERE поля и что в них пробуют фильтровать и кто
3) соберите новую логику сортировки полей

Общее: Волшебной пилюли нет, надо думать и тестировать разные варианты =)

Прочти основной лонгрид от КХ после прочтения моей заметки =)
  • 👍 13
  • ❤ 2
  • 🔥 1
More from @data2viz
  1. Oct 2, 2026FRIDAY Every evening Parents Jeeza =)
  2. Oct 2, 2026How to. Analyze yourself in Music Давно пытался понять, вот мои лайки - плейлист всего тог…
  3. Oct 1, 2026Тут на ИИ-посиделках Руслана Гриша сгенерировал новую должность для людей, которые передаю…
  4. Sep 29, 2026How. not to make Vsratye Podpisi Грущу, когда вижу такое на графиках, собрал мини-страничк…
  5. Sep 25, 2026Friday Jeeza А у вас тоже начали коллеги отвечать на ваши вопросы через ИИ в личных чатика…
  6. Sep 25, 2026How to and what's for. Presets Простой виджет для создания пресетов. Зачем оно? • Юзер мож…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →