184 похожих чатов

Вопрос: есть 2 таблицы: 1. отсортированная по DateTime... 2. без сортировки

но с партициями по YYYYMMDD

Если сделать запрос по датам с ключом --force_data_skipping_indices, то видим что индекс не используется ни в одном из двух.

Если использовать --force_primary_key, то видно что при партицировании по дням, примари кей то же не заюзан.

Вопрос: если нужен поиск данных по дням (и данные в запросе всегда только внутри дня), то как максимально оптимизировать таблицу?

Даст ли что-то дополнительное создание индекса на DateTime (если данные надо выбирать в интервале 1мин к примеру)?

12 ответов

8 просмотров

сколько данных за день в сжатых байтах на диске получаться будет?

Ada-Min Автор вопроса
Slach [altinity]
сколько данных за день в сжатых байтах на диске по...

Если в целом по всем столбцам, то 1-2гиг в сутки

Ada Min
Если в целом по всем столбцам, то 1-2гиг в сутки

как часто в течении дня данные вставляете?

Ada Min
каждую минуту

ну тогда у вас будет толпа мелких партов размером от 0.5 до 3 мегабайт которые clickhouse будет сливать данные вставляются монотонно или прошлый период тоже возможен? если EventTime будет в ORDER BY или в PRIMARY KEY и вставка монотонная (вставляются только данные новых периодов) то парты будет проще пропускать даже когда у вас партицирование по дням и сканировать их будет проще потому что в *.mrk файлах засечек EventTime будет

если савсем грубо то я так понимаю процесс PARTITION BY это логическое разбиение которое позволяет на раннем этапе очень быстро определить какие paratition сканируем ORDER BY / PRIMARY KEY если они по возрастанию времени и низко кардинальным колонкам позволяют быстрее через .mrk* файлы сравнивая значения из mrk с условиями запроса и принимая решешние находить нужные куски в .bin файлах просто делая fopen -> fseek -> fread -> uncompress -> compare

Ada-Min Автор вопроса
Slach [altinity]
если савсем грубо то я так понимаю процесс PARTI...

по PARTITION BY в теории да, но на практике почему-то при партиционировании по дням выборка данных внутри дня работала МЕДЛЕНЕЕ чем при партиционировании по месяцу. Логического объяснения этому так и не нашел.

Ada Min
по PARTITION BY в теории да, но на практике почему...

ну МЕНЬШЕ партиций меньше партов внутри партиции размер парта такой что буфера хорошо пролазят в CPU Cache логическое объяснение простое, главный паттерн чтобы clickhouse работал быстро ему надо парты среднего размера по 50-100 мегабайт в которых есть PK который есть в запросе... и условия фильтрации которые меньше cpu cache miss порождают =)

Ada Min
по PARTITION BY в теории да, но на практике почему...

просто запрос where неправильно написпн

Ada-Min Автор вопроса
Denny [Altinity]
просто запрос where неправильно написпн

хм, а в чем ошибка? Сейчас примерно так: CREATE table.... PARTITION BY toYYYYMMDD(time) SELECT ... WHERE toYYYYMMDD(time)>='20200901' and toYYYYMMDD(time)<'20200902'

Ada Min
хм, а в чем ошибка? Сейчас примерно так: CREATE ta...

В версиях до 20.10 (примерно) кликхаус хранил не toYYYYMMDD(time) значение а min-max значение что попадается в колонке, те toYYYYMMDD(time)>='20200901' такая штука в условиях потенциально могла сканировать все партиции

Dmitry [Altinity] Titov
В версиях до 20.10 (примерно) кликхаус хранил не t...

и все еще не хранит. Просто амос научил кх применять функции к minmax значениям партиций и угадывать для более сложных случаев.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Подскажите, можно ведь комбинировать запись данных в один и тот же Stream через TFileStream и через TCompressionStream поочерёдно? Ну т.е. часть данных мне нужно сжать, часть ...
notme
4
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати на работу никто не хочет, слегка на Сшке подписывать? От 170к в месяц, под Москвой
Andrey Ermakov
6
Карта сайта