Alexey
Junior Member / Новичок
Участник № / Member № 386
отправлено / posted
Я периодически посылаю данные в базу данных через интефейс ODBC.Для этого у меня есть специальные каналы "SQL_для вставки". Я изменяю их значения и посылаю в выход канала "SQL-выполнить" 0 (на входе у него всегда 1).Проходит некоторое время, и мне нужно сделать следующую подобную операцию, т.е присвоить каналам новые значения и послать на выход канала "SQL-выполнить" 0. Интервал времени может быть очень небольшой, возможно, 2 периода пересчета базы каналов (2х0.055 = 0.100 с). Сущность вопроса: иногда (редко, но бывает), что одна серия значений каналов посылается два раза подряд, а другая не посылается (видно по базе данных). Я сделал вывод, что запрос к базе данных посылается не мгновенно после того как я послал на выход канала "SQL-выполнить" 0, а с задержкой (задержка большая, иногда (очень редко) больше 0.5 с). И получается, что на момент, когда делается запрос, значения каналов "SQL_для вставки" уже поменялись, и их предыдущие значения записаны не были. А это серйозная потеря данных. Как вы можете объяснить эту ситуацию, т.е. прав ли я насчет задержки или этому может быть какое-то другое объяснение.
Сообщения / Posts 15 | Из / From: Ukraine
| IP / IP: IP адрес / IP address |
отправлено / posted
Причинами возникновения, описанной Вами ситуации, могут служить следующие: 1.Задержки в выполении запросов к самой базе данных. По опыту можно сказать, что у некоторых из них, например в Access, реакция в ответ на запрос может достигать сотен миллисекунд, что довольно много. (Отсутствие записей) 2.Рассинхронизация по времени канала, выполняющего запрос, и канала, управляющего выполнением запроса. Если мы в течении 2 циклов пересчета 1-го посылали ему на выход отличное значение, то будет выполнено 2 запроса. (Двойные записи)
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |