@LionG

Как правильнее сделать масштабируемую выборку данных мониторинга для графика в заданном временном масштабе?

Например я собираю нагрузку на ЦП каждую минуту. Те в табличке 2 поля: timestamp и % нагрузки. Нужно сделать выборку и вывести данные в график по 2м параметрам "диапазон времени" и "масштаб".
Масштабирование - среднее значение колонки каждые N строк масштаба. Как выполнить масштабирование в SQL ?

Если получать все записи и проходиться скриптом то получается большое кол "лишних" записей что увеличивает время работы. Поэтому думаю лучше делать это в SQL.
"за последний час" 60 записей - в масштабе "минута" 60 записей
"за последний месяц" 43200 записей - в масштабе "день" 30 записей
"за последний год" 518400 записей - в масштабе "месяц" 12 записей

Еще как вариант что бы ничего не нагружать это создать отдельные таблицы для разных масштабов.
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
Что-то типа GROUP BY ROUND(timestamp / 3600) позволит вам получить среднее за час по всем точкам, в этот час входящим.
Но тут надо смотреть на баланс чтения/записи, если чтений сильно больше - лучше тогда агрегировать данные в отдельные таблицы для разных масштабов, потому что такой GROUP BY - это постоянное чтение всех имеющихся данных (в масштабе месяц, ага).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы