в столбце за сутки):
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 миллиарда строк
Обсуждают сегодня