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

Можно ли сделать так, чтобы строки, созданные примерно в одно

время, лежали рядом (на диске). Но поиск по ключу был всё равно быстрым? Подход CREATE TABLE t ORDER BY Tuple(key) PARTITION BY timestamp с малой гранулярностью + INSERT INTO t SELECT key, NOW() AS timestamp ведь не будет работать (много партиций будет читаться)?
Строки для одного ключа вставляются довольно локально по времени.

12 ответов

25 просмотров

1. а зачем? 2. CH — это колоночная база, тут изначально нельзя сложить строки рядом

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. а зачем? 2. CH — это колоночная база, тут изнач...

1. Чтобы данные на диске локально лежали (есть в вопросе). 2. (Предположительно) можно сложить значения колонок, соответствующих строкам, сходным по какому-то критерию, рядом

Anatoliy Tomilov [Russia]
1. Чтобы данные на диске локально лежали (есть в в...

1. я это видел, и поэтому и спросил, а зачем это "данные локально на диске лежали" 2. они и лежат по критерию, он называется order by таблицы

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. я это видел, и поэтому и спросил, а зачем это "...

1. в запросе идёт выборка данных, которые были созданы примерно в одно и то же время (меньше секторов диска прочитано в случайном порядке — лучше) 2. есть ещё partition by и в условии может быть не префикс order by

Anatoliy Tomilov [Russia]
1. в запросе идёт выборка данных, которые были соз...

1. делайте ключ на основе этого времени или сделайте order by проекцию, получите КОПИЮ изначальных данных, но отсортированных в другом порядке. если набор колонок в проекции "покрывает" запрос, движок из проекции данные прочитает. 2. partition by toDate(ts) order by id, ts -> данные лежат в одной партиции, но благополучно раскиданы по партам этой партиции. меньше секторов прочитано, но данные рядом не лежат

Anatoliy-Tomilov [Russia] Автор вопроса
ivan
1. делайте ключ на основе этого времени или сделай...

можно ли как-то задать для SummingMergeTree таблицы CREATE TABLE t ( id String, SimpleAggregateFunction(min, DateTime) ) ENGINE = SummingMergeTree PARTITION BY toYYYYMMDD(ts) PRIMARY KEY id ORDER BY id, ts; каким-то образом ограничение на ts для одного id так, чтобы асинхронная группировка не искала id в партициях отстоящих от текущей более, чем на 1? Текущей в том смысле, что я предполагаю, что движок SummingMergeTree ведёт журнал последних вставленных ключей и для них периодически производит аггрегацию. Вставка происходит в последнюю партицию (она обычно — текущая), это так же предположительно запоминается. Понимаю, что слишком много гипотез, но вроде бы они разумные.

Anatoliy Tomilov [Russia]
можно ли как-то задать для SummingMergeTree таблиц...

если вы знаете что id только в одной партиции, значит добавляйте в where условие по ts. КХ не знает в каких партициях будут лежать данные если вы ему сами не скажете

Anatoliy Tomilov [Russia]
можно ли как-то задать для SummingMergeTree таблиц...

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

Anatoliy-Tomilov [Russia] Автор вопроса
Konstantin Ilchenko
и что вообще вы подразумеваете под фразой асинзрон...

Это тот механизм, который присущ именно SummingMergeTree

Anatoliy Tomilov [Russia]
Это тот механизм, который присущ именно SummingMer...

нету такого механизма, все таблицы семейсива *MergeTree работают одинаково. Они склеивают несколько партов в 1 парт большего размера в пределах одной партиции(PARTITION BY) - это называется merge. Никаких других асинхронных групировок нет

прочитайте вот это https://github.com/ClickHouse/ClickHouse/issues/33056 от начала до конца несколько раз и поиграйте с примерами

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта