логику связки INSERT SELECT
                  
                  
                  Я делаю следующий запрос:
                  
                  
                  `INSERT INTO params_agg_cum SELECT
                  
                  
                      user_id, 
                  
                  
                      today() - 42, 
                  
                  
                      max(dt), 
                  
                  
                      argMaxIf(p_1, date, isNotNull(p_1)) AS p_1,
                  
                  
                      ..........
                  
                  
                      argMaxIf(p_n, date, isNotNull(p_n)) AS p_n,
                  
                  
                  FROM 
                  
                  
                  (
                  
                  
                      SELECT
                  
                  
                          user_id,
                  
                  
                          date,
                  
                  
                          dt,
                  
                  
                          p_1,
                  
                  
                          ..........
                  
                  
                          p_n
                  
                  
                  
                  
                  
                      FROM gamora.params_agg_cum
                  
                  
                      WHERE (date = ((today() - 42) - 1)) AND (user_id >= 1000000000)
                  
                  
                      UNION ALL
                  
                  
                      SELECT
                  
                  
                          user_id,
                  
                  
                          date,
                  
                  
                          dt,
                  
                  
                          p_1,
                  
                  
                          ............
                  
                  
                          p_n
                  
                  
                  
                  
                  
                      FROM gamora.params_agg
                  
                  
                      WHERE (date = (today() - 42)) AND (user_id >= 1000000000)
                  
                  
                  )
                  
                  
                  GROUP BY
                  
                  
                      user_id,
                  
                  
                      date
                  
                  
                  `
                  
                  
                  Параметров(p_1...p_n) у меня много, около 50
                  
                  
                  Я включил distributed_aggregation_memory_efficient и max_bytes_before_external_group_by = 10500000000
                  
                  
                  На выходе должно получиться около 240 миллионов строк
                  
                  
                  Но в память запрос не влезает .
                  
                  
                  Ограничение по памяти у меня в 70ГБ
                  
                  
                  Правда ли что перед тем как вставить, он будет весь ответ представлять в памяти?
                  
                  
                
вы же делаете group by, нет гарантии что строки для некоторого ключа уже точно не встретятся.
Обсуждают сегодня