|
|
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
Множество изменяемых значений, которые пишем каждую секунду, можно ли на стороне mysql сравнивать текущее значение с предыдущим и если оно не выполняет условие Abs(CurrentVal - LastVal) > Deadband то новое значение не писать. Т.е. если разница между текущим значением и последним меньше допустимого зазора, то значение не пишется. Второй вопрос, если возможно первое, то как потом читать такие данные ведь в заданный отрезок времени нужных значений может не быть, т.е. нужно смотреть назад в поисках последнего значения, как это сделать на стороне mysql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2016, 16:25 |
|
||
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
thunderamur, 1 можно в хранимке : прочитал последнее, сравнил с теукщим, добавил/недобавил 2 сформулируй в доступном для всех виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2016, 17:14 |
|
||
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
вадя, 1. что значит в хранимке? Я представляю как это сделать на стороне языка программирования, но для моего случая это не подойдет, т.к. за раз пишется несколько тысяч значений, будет большая нагрузка на систему, на стороне SQL же это должно выполняться на порядки быстрее, чем на стороне того же Python или PHP. 2. Например, структура таблицы: Ид - Время - Параметр - Значение 1 - 1 - 1001 - 100 2 - 1 - 1002 - 3000 3 - 2 - 1001 - 101 4 - 3 - 1001 - 102 5 - 4 - 1001 - 103 6 - 4 - 1002 - 2999 Видно, что во временном промежутке 2-3 включительно нет значений для параметра 1002. Т.е. когда я сделаю простой запрос значений для этих временных промежутков я получу только параметр 1001, а хочу получить и значения для 1002, которые будут равны последнему записанному - 3000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2016, 18:30 |
|
||
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
thunderamur, при такой подаче информации трудно помогать в хранимке - в хранимой процедуре. для каждого значения - вызов хранимки в хранимке : прочитал последнее, сравнил с теукщим, добавил/недобавил если для тебя такое изложение проблемы естественное и понятное , то для меня набор слов. временном промежутке 2-3 что это за промежуток, что он такое на твоей таблице. более доходчиво - правильный ворпрос -половина решения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2016, 18:50 |
|
||
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
1. понятно. 2. 2-й столбец в придуманной выше таблице есть время. Для 1-й секунды - 2 значения, для 2 - 1, для 3 - 1, для 4 - 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2016, 14:13 |
|
||
|
Запись в таблицу только изменений и чтение из такой таблицы
|
|||
|---|---|---|---|
|
#18+
Для каждого значения вызов хранимки будет медленно работать. В моем случае даже отдельный INSERT для каждого значения дает задержку больше допустимой, поэтому пишу все значения за раз. Думаю попробовать сначала реализовать на Python, 1 запрос считать последние значения, на контроллере их сравнить с текущими и 2-м запросом записать все, по mysql вырастет количество запросов в 2 раза, но хоть не в несколько тысяч раз и то хорошо. По питону надо попробовать и посмотреть насколько быстро получится делать сравнение и подготовку строки 2-го запроса к СУБД. Касаемо п.2 один товарищ мне сказал, что есть что-то типа синхронного чтения, когда СУБД сама подставляет значения которых нет для запрошенного timestamp и эти значения подтягиваются из последних записанных. И все это на стороне СУБД, правда он тогда не уточнял MySQL это или какой-нибудь Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2016, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=100&tid=1831736]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 370ms |

| 0 / 0 |
