"Живые" графики нужна помощь.
Модератор: immortal
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: "Живые" графики нужна помощь.
В таблице phistory индексов нет, только первичный ключ по полю ID, который в данном случае не используется.
Соответственно, если выборка из базы идёт не по ID а по другим полям, то на это потребуется много времени.
Если не переделывать данную таблицу капитально, то я попробовал бы создать индекс как минимум по полю ADDED.
Или по связке VALUE_ID и ADDED.
Соответственно, если выборка из базы идёт не по ID а по другим полям, то на это потребуется много времени.
Если не переделывать данную таблицу капитально, то я попробовал бы создать индекс как минимум по полю ADDED.
Или по связке VALUE_ID и ADDED.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: "Живые" графики нужна помощь.
Всё верно -- отсутствие индексов это недоработка. Я у себя в базе их добавлял, но видимо в дистрибутив всё же не включил, а они здорово ускоряют работу с историей значений.LutsenkoDenis писал(а):В таблице phistory индексов нет, только первичный ключ по полю ID, который в данном случае не используется.
Соответственно, если выборка из базы идёт не по ID а по другим полям, то на это потребуется много времени.
Если не переделывать данную таблицу капитально, то я попробовал бы создать индекс как минимум по полю ADDED.
Или по связке VALUE_ID и ADDED.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 284
- Зарегистрирован: Сб ноя 24, 2012 11:47 am
- Благодарил (а): 32 раза
- Поблагодарили: 28 раз
Re: "Живые" графики нужна помощь.
Проблема "прореживания" не только в скорости работы, но и в логике этого "прореживания". Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5
"прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
Таким образом, при "прореживании" надо учитывать значения переменных, которые отражают фактическую картину, а не просто каждое десятое, сотое, тысячное...
Поэтому вариант со вспомогательными таблицами мне нравится больше, их можно создавать (обновлять) отдельным скриптом, который запускать раз в неделю и он уже будет учитывать все максимумы-минимумы значений в периоде. Причем можно просто в отдельную базу это писать, чтобы не засорять базу проекта.
"прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
Таким образом, при "прореживании" надо учитывать значения переменных, которые отражают фактическую картину, а не просто каждое десятое, сотое, тысячное...
Поэтому вариант со вспомогательными таблицами мне нравится больше, их можно создавать (обновлять) отдельным скриптом, который запускать раз в неделю и он уже будет учитывать все максимумы-минимумы значений в периоде. Причем можно просто в отдельную базу это писать, чтобы не засорять базу проекта.
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: "Живые" графики нужна помощь.
Ну да, у меня тоже такие мысли были, просто этот вариант у меня получился как самый простой без переделки таблицы и добавления новых, ну и плюс кол-во точек необходимо выбирать исходя из периода опроса дастчиков и кол-ва точек на графике, тогда и тормозить не будет и график будет отражать реальную картину.denis писал(а):Проблема "прореживания" не только в скорости работы, но и в логике этого "прореживания". Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5
"прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
Таким образом, при "прореживании" надо учитывать значения переменных, которые отражают фактическую картину, а не просто каждое десятое, сотое, тысячное...
Поэтому вариант со вспомогательными таблицами мне нравится больше, их можно создавать (обновлять) отдельным скриптом, который запускать раз в неделю и он уже будет учитывать все максимумы-минимумы значений в периоде. Причем можно просто в отдельную базу это писать, чтобы не засорять базу проекта.
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: "Живые" графики нужна помощь.
На счёт прореживания не вкурсе.denis писал(а):Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5. "прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1.
С учётом наличия индексов на таблице запрос будет достаточно быстро выполняться.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: "Живые" графики нужна помощь.
C самого начала как только я прикрутил 1-wire у меня данные писались в таблицу примерно каждые 30 сек, всего допустим 4 датчика, при моем нынешнем алгоритме выборки график строится секунд 5-6, что не так и много, просто нужно уточнить некоторые моменты по самим настройкам в highcharts, сейчас при диапазоне 1 час график не видно, где-то надо переменную поправить. Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный. Я специально сравнивал текущий higcharts из majordomo с моей версией визуально на всех диапазонах графики очень похожи, но версия которую сделал Сергей ограничена диапазоном вывода и интервалом точек, вот сдесь:LutsenkoDenis писал(а):На счёт прореживания не вкурсе.denis писал(а):Допустим есть 5 значений температуры за день: +5 +20 +5 +1 +5. "прореживаем" по условию "каждое второе" значение, получаем:
+5 +5 +5
т.е. в течение дня температура вроде и не менялась!
А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1.
С учётом наличия индексов на таблице запрос будет достаточно быстро выполняться.
var chart_preiod=50; //days
var chart_interval=60; //seconds (interval);
если поставить 200 дней, график не построится, нужно увеличить chart_interval, в моем же варианте изначально строится весь диапазон который есть в таблице, и уменьшив диапазон можно увидеть все точки которые есть в таблице.
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: "Живые" графики нужна помощь.
Блин, не понимаю...Urbas81 писал(а):Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный.
В таблице phistory поле VALUE_ID - это на сколько я понимаю ID датчика.
Тогда зачем значения с датчика через запятую?
з.ы.
Графики еще не прикручивал, но как раз планировал показания орегоновской метеостанции отображать.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: "Живые" графики нужна помощь.
Значения температры в таблице имеют знаки после запятой,LutsenkoDenis писал(а):Блин, не понимаю...Urbas81 писал(а):Можно наверное и только уникальные брать, но в таблице они с запятой идут 23,4 23,5 или даже с двумя знаками после запятой, график наверное будет ломаный.
В таблице phistory поле VALUE_ID - это на сколько я понимаю ID датчика.
Тогда зачем значения с датчика через запятую?
Я подумал что фраза "А что мешает из базы брать только уникальные значения?
Т.е. за день будет: +5 +20 +1." подразумевает разные числа, вот и написал что с учетом знаков после запятой они практически все будут разные, если в уникальности имеется ввиду ID, так в запросе и так по нему идет выбор, другие датчики не выбираются.
-
- Сообщения: 284
- Зарегистрирован: Сб ноя 24, 2012 11:47 am
- Благодарил (а): 32 раза
- Поблагодарили: 28 раз
Re: "Живые" графики нужна помощь.
Я приведенным sergejey в ветке кодом не пользуюсь, у меня "списано" с другого участника форума и выводится сразу несколько значений на один график. Превратить данные в уникальные поэтому не проблема, т.е. если есть значения: 24,5 24,7 24,3 25,1 24,9 то округляем и получаем уникальные значения: 25 и 24. Но все равно, надо перебрать, округлить весь миллион записей каждый раз, поэтому и нравится идея с заранее заготовленными таблицами.
-
- Сообщения: 289
- Зарегистрирован: Вс сен 16, 2012 9:39 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: "Живые" графики нужна помощь.
А можно посмотреть код который выводит несколько значений на один график, и как идет запрос к БД. Я выводил несколько значений на один график, но запрос к БД отличался от того который используется в варианте с разными интервалами.denis писал(а):Я приведенным sergejey в ветке кодом не пользуюсь, у меня "списано" с другого участника форума и выводится сразу несколько значений на один график. Превратить данные в уникальные поэтому не проблема, т.е. если есть значения: 24,5 24,7 24,3 25,1 24,9 то округляем и получаем уникальные значения: 25 и 24. Но все равно, надо перебрать, округлить весь миллион записей каждый раз, поэтому и нравится идея с заранее заготовленными таблицами.