2015-10-17 4 views
0

У меня есть таблица MySQL, в которой хранятся данные в реальном времени с разных устройств. Данные записываются каждые 20 секунд. таблица выглядит следующим образом:Prune mysql table - записи усреднения

report_dt    device value1 value2 
2015-10-16 10:32:15 solar  34.4  67.8 
2015-10-16 10:32:15 grid  56.9  23.5 
2015-10-16 10:32:35 solar  45.6  34.3 

запросов, чтобы получить записанные значения в устройстве довольно существенны CPU. У меня есть (report_dt, device) в качестве первичного ключа. Кроме того, через несколько дней мне больше не нужны 20-секундные данные, а всего лишь 10-минутное среднее.

Так либо же настройки таблицы или таблицы для каждого устройства будет удовлетворительным, с этим содержимым:

report_dt    device value1  
2015-10-16 10:00:00 solar  avg(value1 over 10 mins) 
2015-10-16 10:10:10 grid  avg(value1 over 10 mins) 
2015-10-16 10:20:20 solar  avg(value1 over 10 mins) 

Идея заключается в том, чтобы выполнить действие обрезку один раз каждые 24 часа.

Причина в том, что данные, содержащие средние значения, должны быть быстро восстановлены. И поскольку данные за 20-секундный интервал чрезвычайно колеблются, я должен использовать усреднение или данные трудно оценить.

Я мог бы сделать это в приложении. Получите среднее значение в течение 10 минут с интервалом в 10 минут и запишите его обратно в другую таблицу или разные таблицы, по одному для каждого устройства.

Но возможно ли что-то также с функцией базы данных?

ответ