весь PREWHERE перед запросом? Кажется, это как бы и подразумевается и by design
SELECT
Path,
groupArray(Time),
groupArray(Value),
groupArray(Timestamp)
FROM graphite.carbon_lr
PREWHERE (Date >= '2019-08-19') AND (Date <= '2019-09-18')
WHERE (Path IN ('asd', 'dsdsdsdd')) AND ((Time >= 1568812254) AND (Time <= 1568814299))
GROUP BY Path
FORMAT Null
↓ Progress: 12.29 thousand rows, 30.13 MB (1.87 thousand rows/s., 4.59 MB/s.) ████████████████████▋ 57%
Exception on client:
Code: 32. DB::Exception: Attempt to read after eof: while receiving packet from localhost:9000
Запросы без группировок и подобного выполняются за O(1) памяти
нет, там стриминг по 65К (max_block_size), расход памяти будет * threads, кстати вам надо попробовать в PREWHERE надо положить либо все, и либо ничего, отключив optimize_move_to_prewhere дальше стрим передается в group by и если влючен group by через диск, то начнется спиллинг. скорее всего вам вообще не нужен PREWHERE, потому что у вас только одна колонка фактически не в индексе и на нее нет фильтров. (Date коррелирует с time). т.е. с помощью индекса PATH / Time всегда спускаемся в те марки которые нужны, а PREWHERE у вас делает еще один лишний проход.
Обсуждают сегодня