KH интерпретируются или там jit ? Я еще не мерял, и код тоже не смотрел
Насчет JIT не уверен, но конкретно по потреблению памяти не самая эффективная вещь https://kb.altinity.com/altinity-kb-functions/array-like-memory-usage/
Я бы сказал - САМАЯ неэффективная: судя по отзывам здесь и собственным экспериментам, в arrayMap данные дублируются на каждой итерации, а память до конца запроса не чистится. В итоге, сейчас маюсь со сравнением "каждый с каждым" массива из 900 тысяч элементов UInt64 - 24 Гигов на это не хватает 😞
> а память до конца запроса не чистится. Ну это не совсем правда. Просто кх обрабатывает данные в блоках по 64к строк (по дефолту, max_block_size настройка) и умножаем это на число параллельных потоков
Ок, тогда откуда нехватка памяти ?
900к*65к строк в вашем случае Вы посмотрели "статью"?
Т.е., единственный способ "уместиться" в памяти - снижать кол-во потоков и размер блоков ?
И упрощать ваши функции, что бы не копировались большие массивы
Упрощать - как именно. Какие Кликхаус-специфичные нюансы вызывают "копирование больших объемов" ?
> Какие Кликхаус-специфичные нюансы вложенные arrayMap и использование массивов в лямбде arrayMap(x -> arr[x])
Вот-вот - а именно эти два пункта мне и нужны
https://kb.altinity.com/altinity-kb-functions/array-like-memory-usage/
Спасибо, посмотрю
Спасибо за информацию, годнота.
Обсуждают сегодня