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

Коллеги, подскажите пожалуйста, по движку MergeeTree? Ситуация: Есть три одинаковые таблицы на

222 миллиона строк. В каждой есть колонка date с min(date)='2022-03-01' и max(date)='2022-04-01'.

Отличаются таблицы только в DDL.

Первая - Partition By date Order By tuple()
Вторая - Order By date
Третья - Partition by date Order By (date, userId, orderId)
Четвертая - без партиций и сортировки. Данные те же самые

Делаю запрос с указанием диапазона дат. И не вижу почти никакой разницы в usage_memory

Это норм? или не норм?
P.s. query_duration_ms и memory_usage должны коррелировать или нет?

34 ответов

26 просмотров

Да так и должно быть вы добавили первым в ORDER BY с большой кардинальности

usage memory не должно меняться кх читает данные в потоке, обрабатывает по 65к строк за раз на 1 треде

Байкулов-Антон Автор вопроса
Dmitry [Altinity] Titov
usage memory не должно меняться кх читает данные в...

Usage_memory разный. А таблицы одинаковые. Почему так?

Байкулов-Антон Автор вопроса
Константин
Да так и должно быть вы добавили первым в ORDER BY...

А в чём тогда смысл Order By и Partition By если чтение таблицы с этими настройками и без них ничем не отличается? Или я не туда смотрю?

Байкулов Антон
А в чём тогда смысл Order By и Partition By если ч...

позволяет меньше прочитать с диска -> ускорить запрос это не значит что оперативной памяти надо будет пропорционально меньше

Байкулов Антон
А в чём тогда смысл Order By и Partition By если ч...

сделайте таблицу без order by и partition by, и увидите, что чтение с where по date без них очень даже отличается)

Байкулов-Антон Автор вопроса
Konstantin Ilchenko
позволяет меньше прочитать с диска -> ускорить зап...

А как правильно оценить изменение скорости чтения? query_duration_ms в рамках одного и того же запроса - меняется

Байкулов-Антон Автор вопроса
ivan
сделайте таблицу без order by и partition by, и ув...

Нa MergeTree без order_by нельзя создать таблицу

Байкулов-Антон Автор вопроса
Байкулов Антон
Нa MergeTree без order_by нельзя создать таблицу

Базовая идёт c tuple() и не отличается от остальных

Байкулов Антон
А как правильно оценить изменение скорости чтения?...

включите send_logs_level = 'trace' и наблюдайте за изменением числа читаемых гранул с диска

Байкулов-Антон Автор вопроса
ivan
1. explain estimate 2. system.query_log

Я и пользуюсь system.query_log

Байкулов Антон
Я и пользуюсь system.query_log

read_rows, read_bytes. Без партицирования будет больше

Байкулов-Антон Автор вопроса
Байкулов Антон
Базовая идёт c tuple() и не отличается от остальны...

так у нее партиционирование по date, этот ключ движок и использует

Байкулов-Антон Автор вопроса
ivan
так у нее партиционирование по date, этот ключ дви...

Без партицирования. Я же описал условия. Втоаря таблица вообще без партиций, только Order by по date. Базовая таблица без партиций тоже, там order by tuple()

Байкулов-Антон Автор вопроса
Roman Haritonov
А вариант без order by и partition by?

Там же есть. И в нём нет разницы.

Байкулов Антон
Без партицирования. Я же описал условия. Втоаря та...

может, я куда-то не туда смотрю, но тут написано, что во всех трех таблицах date либо в sorting key, либо в partition key

Байкулов-Антон Автор вопроса
ivan
может, я куда-то не туда смотрю, но тут написано, ...

На скрине есть четвертая, generated_data. Там нет ни партиций ни сортировки P.s. Добавил описание

Байкулов Антон
На скрине есть четвертая, generated_data. Там нет ...

А 200 это ли не лимит dbeaver на количество загружаемых строк? Попробуйте вместо этого делать select count() ...

Roman Haritonov
А 200 это ли не лимит dbeaver на количество загруж...

А смысл select count() если по факту он обратится к файлам не с данными, а с мета данными ?

Константин
А смысл select count() если по факту он обратится ...

это можно отключить прямо в рамках запроса

Байкулов-Антон Автор вопроса
Roman Haritonov
А 200 это ли не лимит dbeaver на количество загруж...

Да, лимит бобра. Делал лимит 300 000 и Select * разницы тоже не было. Полдня развлекаюсь.

Байкулов Антон
Да, лимит бобра. Делал лимит 300 000 и Select * ра...

Поймите, что Кликхаус не экономит память, он жрёт как можно больше при любых условиях.

Константин
А смысл select count() если по факту он обратится ...

Разницу все равно будет видно, в read_rows точно

Байкулов-Антон Автор вопроса
Константин
Поймите, что Кликхаус не экономит память, он жрёт ...

Это ок, мне бы скорость выполнения запроса увеличить. Кликхайс же пипец какой быстрый=) Вот результат count(distinct date) для тех же таблиц

Байкулов Антон
screenshot Это ок, мне бы скорость выполнения запроса увеличи...

Ну вот вы берёте в ORDER BY добавляете те столбцы которые используется в WHERE

Байкулов-Антон Автор вопроса
Байкулов-Антон Автор вопроса
Константин
Дата должна быть в конце

Ок,а если она единственное поле в order by?

Байкулов Антон
screenshot Это ок, мне бы скорость выполнения запроса увеличи...

у вас данные за какой период в таблице? вроде 100 мс. duration, куда быстрее? потоки выделяют память на каждую колонку на декомпрессию и на чтение и стримят если нет агрегации, поэтому можно уменьшать кол-во потоков, чтобы использовать меньше памяти

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта