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

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

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

12 ответов

5 просмотров

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

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

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

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
18
что это и почему оно? executor.start_polling(bot, skip_updates=True, on_startup=on_startup, File "/usr/local/lib/python3.10/dist-packages/aiogram/utils/executor.py", line 4...
𐌍𐌄 ᕓ𐌄𐌓𐌌Ꝋ𐌓𐌄
2
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
Подскажите, почему в правом коде с1 дополняется до 8байт, а не до 4?
Sergey
9
Карта сайта