Обсуждаем ClickHouse
Кластер из 2 нод, таблицы типа Replicated.... И всё )
Читать полностью…Опубликован релиз 25.5!
Presentation: https://presentations.clickhouse.com/2025-release-25.5/
Video: https://www.youtube.com/live/wxicecqZOuw
Changelog: https://github.com/ClickHouse/ClickHouse/blob/master/CHANGELOG.md
да криво делают пушдаун, лечится limit
https://fiddle.clickhouse.com/e7a518c3-9dcc-4e5c-955f-962674b9d9c4
действительно
но это странно, с учетом
x and weight must both be Integer or floating-point, but may have different types.
Добрый день!
у функции avgWeighted есть какая-то проблемма с Float?
https://fiddle.clickhouse.com/c881ef0d-f2d1-4759-9dbd-a11892731de4
а время вообще в ключ сортировки стоит добавлять ? toDate(event_time) ок я понял ставим на первое место
Читать полностью…да, время в партиции, а на первое место toDate or toStartOfDay
Читать полностью…а если мы всегда селектим какоето конкретное время а не дату, то выгоднее в партицию засунуть время выходит ? а в ключе сортировки надо ли в таком случае ставить время на первое место ?
Читать полностью…ну кликхаус же не знает что event_date это производная от event_time
Читать полностью…если в WHERE стоит event_time, то почему нет?
Читать полностью…если дата будет в партиции то понятно что по дате будет выборка эффективной, суть моего вопроса строится вокруг того чтобы сделать партицию от времени toYYYYMM(event_time) - есть ли смысл делать так ?
Читать полностью…Тоесть если в ключе сортировки на первом месте будет event_date и партиция toYYYYMM(event_time) то будет ли фильтрация по event_date эффективной? Поймет ли кликхаус что данные нужно брать изтконкретных партиций или он во все пойдет?
Читать полностью…и еще - если я сделаю toYYYYMM(event_time) и при этом event_date посчитаю чз DEFAULT toDate(event_time)
- то будет ли чтение эффективным с WHERE event_date BETWEEN ...
настолько же как и WHERE event_time BETWEEN ...
Всем привет! Вопрос про область применения репликации.
У нас есть один единственный инстанс CH, без шардов и реплик, который используется как самим продуктом, так и аналитиками с BI-системой. Мы хотим отделить друг от друга прод и аналитику, при этом сохранив актуальность и консистентность данных. Решение видится в создании replicated таблиц для аналитики на отдельном сервере.
Прошу помощи и совета, как бы вы реализовали такую схему?
добавил https://github.com/ClickHouse/ClickHouse/issues/80794
Читать полностью…Всем привет!
Оператор where
не работает с движком Join
я так понял?
https://fiddle.clickhouse.com/181d7a84-9bf4-47d0-9166-4d25e7eff3bd
Нашел похожий issue, но непонятно как решить. Пробовал обернуть в подзапрос, но все равно не работает.
https://github.com/ClickHouse/ClickHouse/issues/16991
проблема с Int имхо ;-) если второй агрумент FLoat — все ОК
Читать полностью…Партиции уже давно больше про манипуляции с данными. Переносить по партициям, удалять, вставлять… например, можно провести работы с таблицей в месяц и далее готовую партицию перенести в большую таблицу.
Как верно отметили выше, схема с партицией и без часто работают практически одинаково и на запись и на чтение.
Выборка, затрагивающая 2 партиции может работать медленнее, чем при отсутствии этих партиций.
Если у вас условие выборки не содержит условия на партиции, то вы так же можете только проиграть.
Если у вас нет плана работы с партициям, то можете их не делать или делать максимально большими.
Вопрос же от времени или от даты совершенно несущественен. Время которое клик потратит чтобы из вашего времени в условии получить список нужных партиций ничтожно.
Ну типа да, лет ... более чем 6 назад ещё на старых версиях клика, ещё до того как я начал там работать, наверное могли бы.
Читать полностью…получается вы могли просто toDate(time) в where использовать вместо создания новой таблицы с новым партиционированием ? я правильно вас понял ?
Читать полностью…У меня как то была огромная табличка, более чем на сотню машин забитых дисками, занимала на каждой реплике с десяток териков, партиционирована была по toYYYYMM(время), с рекламными событиями. Чтобы иметь возможность переливать некорректные данные за конкретную дату, сделали вторую табличку, такую же, партиционированую по дате, начали писать туда, понемногу переливая данные из старой. Знаете что поменялось по дашикам читателей и писателей? Скорость вставки, скорость выборки... Ничего.
Читать полностью…Ну да. Если вы используете дату для партиционирования, не забывайте добавлять условие в WHERE
Читать полностью…С чего бы это? partition pruning сработает одинаково. Но если у вас там еще и время фильтруется, то прочитаете две колонки вместо одной, что медленее
Читать полностью…а эффективность селекта не будет хуже для toYYYYMM(event_time) с WHERE event_time BETWEEN в отличие от toYYYYMM(event_date) с WHERE event_date BETWEEN ?
Читать полностью…Зачем вам эта дата? Используйте везде время. На первое место можете поставить toStartOfDay(event_time) или toDate(event_time)
Читать полностью…Партицию тоже сделайте из даты, так поймет. Вообще, к сожалению, далеко не везде КХ понимает, что можно выражение из партиции или ключа сортировки "творчески¨ интерпретировать для оптимизаций выборок.
Читать полностью…Чтобы было эффективно, надо таблицу по дате сортировать. Колонку с датой можно сделать материализованной из времени.
Читать полностью…всем привет, подскажите пож-та - есть ли разница с точки зрения производительности вставки и дальнейшего чтения - указывать партицию как toYYYYMM(event_time) или toYYYYMM(event_date) ? конечно при условии использования колонки из партции в WHERE условии в селекте
Читать полностью…