в столбце за сутки):
                  
                  
                  SELECT count(distinct stream_id) FROM БАЗА.data WHERE timestamp between '2020-10-06 00:00:00' and '2020-10-06 23:59:59'
                  
                  
                  
                  
                  
                  Выполняется он так долго:
                  
                  
                  1 rows in set. Elapsed: 998.163 sec. Processed 2.67 billion rows, 12.94 GB (2.68 million rows/s., 12.96 MB/s.)
                  
                  
                  
                  
                  
                  Версия Кликхаус: 20.5.2 revision 54435
                  
                  
                  
                  
                  
                  Размер базы: 68 ГБ (Прирост в месяц сейчас +7 ГБ)
                  
                  
                  
                  
                  
                  Нагрузка CPU во время выполнения: 50% - 60%
                  
                  
                  
                  
                  
                  Сервер: 8 CPU / 16 RAM
                  
                  
                  
                  
                  
                  Возможно ли как-то посчитать количество записей быстрее и с меньшими ресурсами?
                  
                  
                  Странно что для суток перебирается в базе аж 12.94 GB ведь в сутки нет столько данных
                  
                  
                
Проблема решилась изменением timestamp на date. Видимо timestamp тяжело обрабатывается
Зависит от сортировки и партиционирования. Попробуйте ещё uniqCombined вместо count distinct
у тебя PARTITION BY toYYYYMM(date) какой нибудь стоит в структуре таблицы и ORDER BY date поэтому так быстро и посчиталось потому что легче определить какие куски данных вытащить а с timestamp у тебя приходится фильтровать все 2.67 миллиарда строк
Обсуждают сегодня