Обсуждаем ClickHouse
1. Это как коррелированный подзапрос, возвращающий набор данных, в postgres - это аналог lateral, очень удобная вещь. Да, также используется для вызова tvf.
2. cross apply / lateral очень хорошо работает с values. Позволяет из нескольких колонок получить рекордсет в столбец и эффективно поджойнить / замутить exists если есть индексы. В таком случае, это как arrayJoin только по колонкам
3. Часто используется для частных случаев, когда есть какие то кастомные where + limit, то есть не совсем limit by (не факт что его в 100% можно накостылить).
для этого есть LIMIT BY в ClickHouse
SELECT *Читать полностью…
FROM other_table
WHERE id IN (SELECT id FROM main_table)
ORDER BY some_metric DESC
LIMIT 5 BY id
извините , у меня когнитивное искажение... в clickhouse табличная функция это функция которая возвращает какой то recordset
в clickhouse нет btree ни каком виде...
возможно вам надо прочитать про dictGet и про joinGet в контексте clickhouse
что такое cross apply? вы с cross join не путаете?
Читать полностью…Я знаю этот оператор. Но как выяснили я не с того начал и немного людей ввёл в заблуждение.
Читать полностью…Думал про мелкие фетчи, но очередь не уменьшается, только растет
Читать полностью…значит какие-то еще фетчи есть, быстрые, маленькие
Читать полностью…Там в основом ошибки, что максимально 16 потоков на fetch
Читать полностью…что же в ней древнего? union, except, intersect операции на множествами
Читать полностью…Добрый день
Ввожу новую реплику.
Данные переписались на 90% а потом потребление сети и диска сильно сократилось
В replication_queue копится очередь
Почему синхронизация остановилась? Куда посмотреть можно?
Спасибо!
tenant_id добавлять в партицию это ещё надо додуматься.
Короче, кулхацкерам можно продолжать лепить месячные партиции по дате если много данных, как в других MPP DB?
это написано чтобы отвадить новичков изобретать сложные partitionby , и создавать супергранулярные партиции, партиций должно быть мало. И вставки (запись в течении дня) должны затрагивать в идеале одну партицию.
когда вы делаете partiition by (tenant_id, toYYYYMM(date)) вы должны осозновать последствия, для новичка это выстрел в обе ноги.
Добрый день
Удалось решить проблему с SASL аутентификацией?
А что дальше? Какие рекомендации?? Ну вот вижу что хренолион строк читает.
Читать полностью…я бы смотрел запросы которые много читают
типа
select * from system.processes order by read_rows desc;
да, без этого можно жить, джойн + оконки, в клике вот limit by
как я понял, это всё было частью истории по прикручиванию в sql знакомых девелоперам циклов, чтобы им было легче в новом языке, и поэтому возникли и курсоры с построчным проходом, и cross / outer apply с вызовом функции для каждой строки
в клике этого и нет, да, и с его организацией хранения данных сама идея выглядит сомнительно
а так да, табличная функция возвращает резалтсет. вот есть у нас 5 строк с id, можно через cross apply вернуть топ 5 чего-то из другой таблицы для каждого id и в итоге получим 25 строк
cross / outer apply — это когда в sql принесли выполнение табличной функции для каждой строчки. у майков у t-sql точно был, где-то наверняка еще тоже есть.
хорошо будет работать, если в правой части btree и локаторы строк, чтобы быстро доставать подмножества для левой части
Что в cross apply (идущее с top n в комплекте, например) плохого?
Читать полностью…select * from system.replication_queue where is_currently_executing
select table, type, last_exception, num_tries from system.replication_queue where is_currently_executing
В том то и дело, сеть 10g, почти по нулям. А на старте на полную катушку использовалось
Читать полностью…наверное просто еще какой-то фетч остался
select database, table, round(elapsed*(1/progress)-elapsed,2) estimate, elapsed, progress, formatReadableSize(total_size_bytes_compressed) from system.replicated_fetches
там бывает что 16 фетчей тянут и сеть используют на 100%, 15 заканчивают и остается последний
select * from system.replication_queue order by num_tries desc limit 10 format VerticalЧитать полностью…
есть еще в sql такая древняя команда как EXCEPT для подобных сценариев
Читать полностью…был период постоянно находились умельцы которые писали partition by ( mydatetime64col )
и у них моментально все падало с too many parts
и поэтому КХ команда старается чтобы все работало быстро у чудиков которые делают create table events (j JSON)
без всяких partition/orderby
Ну так себе и представлял. )) Ок спасибо. Еще раз извините если что не так!
Читать полностью…а зачем вы вообще туда полезли? может и фиг с ним, ну тормозит и что
ну разбираемся нужен ли такой запрос вообще или нет, кто его запускает, что он делает, пытаемся понять как его облегчить
желательно это сделать для всех однотипных запросов разом
Всем привет! Может знает кто-то ответ на такой прозаичный пятничный вопросик:
Почему в доке написано что партиции предназначены только для манипуляции с данными, а для ускорения запросов нужно применять ORDER BY и индексы? Тогда как partition pruning отлично работает, судя по планам, и не читает лишние партиции при запросе.
Видел и такое. Вообще там на этом узле исчисления на десятки миллионов строк по этому полю
Читать полностью…Скорее вы правы. Но я не знаю пока методы диагностики и выявления. Я много вижу, а что с этим делать не понимаю пока
Читать полностью…