Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Перенос данных из таблицы в таблицу с математикой / 4 сообщений из 4, страница 1 из 1
02.10.2017, 14:38
    #39529407
Gexan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных из таблицы в таблицу с математикой
Всем добрый день
Появилась такая задачка, реализовано сейчас на PHP, но очень хочется перенести этот процесс на MySQL

Суть
Есть две таблицы
первая cpu_live
вторая cpu

В таблицу cpu_live с периодичностью в секунду пишется порядка 100-200 записей, из которых мы на сайте строим живой график
поля таблицы:
id, machine_id, cpu, cpu1, cpu2, cpu3, cpu4, cpu5, cpu6, cpu7, cpu8, cpu9, cpu10, cpu11, cpu12, cpu13, cpu14, cpu15, cpu16, data_add

во второй таблице все идентично


Хотелось бы получить следующее

Выбрать допустим 10 самых старых записей по machine_id, получить средние значения всех столбцов и сохранить полученное одной строкой в cpu.
После этого удалить эти 10 самых старых записей
Затем еще раз то же самое, и так до того момента пока в cpu_live не останутся данные за последние 30 минут

Вроде бы все просто, но если честно уже всю голову поломал :)

На всякий случай объясню проблему целиком может кто-нибудь подскажет более изящное решение

В таблицу пишутся показания процессоров с периодичностью в секунду, повторюсь из них строится живой график за последние 20сек-10 минут.
Само собой график рисуется запросом в бд
Столкнулись с тем что когда мы пытаемся сделать выборку за час, мы имеем определенные сложности, поскольку детализация графика получается с точностью до секунды, ладно, час еще терпимо, а вот показания за день заставляют сервер задуматься...

Пока вижу только два решения либо делать выборку с прореживанием, но через 30 минут после поступления данных к нам их хранить в этом виде нет уже совсем никакого смысла, либо где то хранить данные уже в прореженном виде, а это собственно сабж)

Заранее спасибо
...
Рейтинг: 0 / 0
02.10.2017, 14:54
    #39529418
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных из таблицы в таблицу с математикой
Обычное дело - расчёт укрупнённой статистики и очистка детальной.

Расчёт укрупнёнки я бы предложил возложить на шедулер (CREATE EVENT) - потребуется несколько усредняющих заданий, скажем, минутное, десятиминутное, часовое, суточное... А очистку устаревших данных заменить на партиционирование по дате-времени, с заблаговременной подготовкой партиций на будущие периоды и отключением потерявших актуальность старых партиций, которые можно как удалять, так и архивировать.

Ещё я бы предложил крепко подумать, надо ли вот строго "10 старых". Если, скажем, в таблицу падает по одной записи с машины в секунду - не проще ли усреднять за 10 секунд, например? во-первых, не надо отсчитывать штуки, которых явно в таблице нет, во-вторых, проще строить графики, когда все значения аргумента выровнены.
...
Рейтинг: 0 / 0
02.10.2017, 15:02
    #39529429
Gexan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных из таблицы в таблицу с математикой
Akina,

Уточню, 10 самых старых показаний с машины.
С каждой машины раз в секунду падают показания с процессоров и как вы написали выше нам не нужны эти данные по истечении 30 минут, достаточно хранить средние данные за 10 секунд.
Таким образом график рисоваться будет намного быстрее и удобнее.

Да, наверное это поможет, сейчас попробую сделать шедулер
...
Рейтинг: 0 / 0
02.10.2017, 15:07
    #39529433
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос данных из таблицы в таблицу с математикой
Gexan10 самых старых показаний с машины.
Gexanдостаточно хранить средние данные за 10 секунд.
Вы уж определитесь. Это разные вещи. Не факт, что в таблицу лягут все 10 точек за 10 секунд - а ну как одна пропущена...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Перенос данных из таблицы в таблицу с математикой / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]