EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

[BugFixed] Архив значений и дублирование записей.


Author Message
Written on: 26. 02. 2015 [15:36]
igkondrat
Игорь Кондрат
Topic creator
registered since: 04.12.2014
Posts: 4
Добрый день,
Помогите разобраться.
Есть -
Openscada _0.9-r2191_i386
Mysql version: 5.5.41-0+wheezy1 (Debian)

Создан контроллер в «Вычислителе на java подобном языке», в нем 25 параметров.
Планирование вычисления установлено в 30с. Фактически занимает 5-10с.

Создан архив значений на БД, но я никак не могу понять значения параметров
«периодичность значений» и «периодичность архивирования».
В моем случае я выставляю периодичность значений 30с (так как опрашиваю каждые 30 секунд), а архивирование мне надо выставить любое значение более 30с?
Если я выставлю «периодичность значений» 60с, то в базу будут писаться значения с шагом 60с.?

Но основная проблема в другом, таких контроллеров у меня 10 штук, и время архивирования, при выставленном значении «периодичность архивирования» в 120с, составляет примерно 12-15с. Но иногда превышает 1.5 минуты. Если включить уровень лога в «Отладку» и запустить логирование запросов mysql видим такую картину. -
В лог openscada непрерывно с огромной скоростью сыпится -
openscada: 4|/sub_BD/mod_MySQL/db_oscada_sokol/ | Ошибка 1 запроса к БД: Duplicate entry '2015-02-26 12:42:00-0' for key 'PRIMARY'

В момент sql-запросов -
INSERT INTO `oscada_sokol`.`DBAVl_arch_1m_set4tm_rp_3_A` (`TM` ,`TMU` ,`VAL` ) VALUES ('2015-02-26 12:39:00' ,'0' ,'5000' )
SELECT 1 FROM `oscada_sokol`.`DBAVl_arch_1m_set4tm_rp_3_A` WHERE `TM`='1424954340' AND `TMU`='0'
INSERT INTO `oscada_sokol`.`DBAVl_arch_1m_set4tm_rp_3_A` (`TM` ,`TMU` ,`VAL` ) VALUES ('2015-02-26 12:39:00' ,'0' ,'5000' )
COMMIT
ALTER TABLE `oscada_sokol`.`DBAVl_arch_1m_set4tm_rp_3_A` DROP PRIMARY KEY, CHANGE `VAL` `VAL` bigint NOT NULL DEFAULT '0' ,ADD PRIMARY KEY (`TM`,`TMU`)
DESCRIBE `oscada_sokol`.`DBAVl_arch_1m_set4tm_rp_3_A`

Т.е. зацикливается insert с одинаковым TM(primary). Чем и «грузит» сервер.

Я пробывал удалять архив, создавать новый и т. д., но ситуация не меняется, в чем может быть ошибка?
Written on: 26. 02. 2015 [16:42]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"igkondrat" wrote:

Создан архив значений на БД, но я никак не могу понять значения параметров
«периодичность значений» и «периодичность архивирования».
В моем случае я выставляю периодичность значений 30с (так как опрашиваю каждые 30 секунд), а архивирование мне надо выставить любое значение более 30с?

Можно и меньше, но тогда он будет гонять пустые циклы через раз в виду отсутствия данных.

"igkondrat" wrote:

Если я выставлю «периодичность значений» 60с, то в базу будут писаться значения с шагом 60с.?

Если «периодичность значений», то да.

"igkondrat" wrote:

Но основная проблема в другом, таких контроллеров у меня 10 штук, и время архивирования, при выставленном значении «периодичность архивирования» в 120с, составляет примерно 12-15с. Но иногда превышает 1.5 минуты. Если включить уровень лога в «Отладку» и запустить логирование запросов mysql видим такую картину. -
В лог openscada непрерывно с огромной скоростью сыпится -
openscada: 4|/sub_BD/mod_MySQL/db_oscada_sokol/ | Ошибка 1 запроса к БД: Duplicate entry '2015-02-26 12:42:00-0' for key 'PRIMARY'

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

Learn, learn and learn better than work, work and work.
Written on: 27. 02. 2015 [00:19]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"roman" wrote:

Позже исправлю.

Исправлено!

Learn, learn and learn better than work, work and work.



11799