весь 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 у вас делает еще один лишний проход.
Обсуждают сегодня