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

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

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

12 ответов

6 просмотров

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 от начала до конца несколько раз и поиграйте с примерами

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

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

Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
анрей С какой целью зашёл?
КТ315
42
Коллеги, у меня тут возникла одна очень интересная задачка. Есть один бандл, который содержит в себе 2 типа образов - бэкенд и фронтенд. Выкатываются последовательно, сперва б...
სერგეი ქრისტოვი
12
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
17
Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
Всем привет ребят! Мб кто-то сталкивался? adminСomponents .get("searchСomponents", use: searchComponents) .openAPI( summary: ...
Admin Adminov
2
Насколько моя реализация Exercise 1 плохая? data MessageType = Info | Warning | Error Int deriving (Show, Eq) type TimeStamp = Int data LogMessage = LogMessage ...
= ?
10
Карта сайта