Форум TRACE MODE: техническая поддержка
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Мониторы Реального Времени / Real Time Monitors » Не корректное отображение из БД

   
Автор / Author Тема / Topic: Не корректное отображение из БД
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144


Icon 1 отправлено / posted      Профиль для / Profile for arkos           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте!
В нашем проекте требуется отображать значения только из БД. Сейчас примерно 2000 шаблонов Баз данных и 4900 каналов (возможно будет больше). База данных находится на сервере. Работаем по сети Ethernet (TCP/IP). При работе проекта в реальном времени и генерации сигналов с периодом 1с отображение значения параметров меняется через 5-6 с (интервал не постоянен). Это очень много. Уменьшение периода и цикла CALC, изменение потоков результатов не дало. Подскажите, пожалуйста, что нужно сделать, чтобы отображались значения 1 раз в секунду.

МРВ+(32000 ch) TM 6.08
My SQL Workbench 5.2 CE
MySQL ODBC 5.2 Unicode Driver

Сообщения / Posts 143 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Trace Mode 6 позиционируется как средство программной поддержки АСУ ТП.
SQL-интерфейс является вспомогательным. Он использует для обмена с БД ODBC-драйвер, который имеет существенные ограничения по производительности. Поток SQL-запросов имеет пониженный приоритет.
При таком объеме SQL-запросов полученные динамические характеристики, скорее всего, являются предельными.
Существенным фактором является также структура и функции обработки и хранения полученной информации.

Возможно, несколько ускорить обмен позволит использование группового считывания столбцов и строк (см. документацию).

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144


Icon 1 отправлено / posted      Профиль для / Profile for arkos           Редактировать/удалить сообщение / Edit/Delete Post 
Спасибо за ответ!
Структура БД, с которой мы работаем такова, что использование группового считывания столбцов не возможно. Поэтому хотели бы применить оператор UNION или TRANSACTION, но, судя по всему, SQL-интерфейс ТМ не поддерживает эти операторы.
Пример запроса которые по отдельности работают, но вместе не работают:

START TRANSACTION;
SELECT codapardd1f.KKS #ARG_000#, valuesadd1f.CurrentTime #ARG_001#, valuesadd1f.Status #ARG_002#, valuesadd1f.Value #ARG_003#
FROM codapardd1f, valuesadd1f
WHERE codapardd1f.Id = valuesadd1f.IdParameter AND codapardd1f.KKS = '0PEB10CT001' Order by CurrentTime desc limit 1;
SELECT codapardd1f.KKS #ARG_004#, valuesadd1f.CurrentTime #ARG_005#, valuesadd1f.Status #ARG_005#, valuesadd1f.Value #ARG_007#
FROM codapardd1f, valuesadd1f
WHERE codapardd1f.Id = valuesadd1f.IdParameter AND codapardd1f.KKS = '0PEB10CT005' Order by CurrentTime desc limit 1;
COMMIT;
Правильно ли я понимаю, что эти операторы в ТМ не работают?

Сообщения / Posts 143 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144


Icon 1 отправлено / posted      Профиль для / Profile for arkos           Редактировать/удалить сообщение / Edit/Delete Post 
Можно ли в ТМ использовать другой коннектор?
Сообщения / Posts 143 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Trace Mode 6 в штатных SQL-запросах работает только через ODBC-драйвер соответствующей БД.

Тrace Mode 6 знает ключевые слова UNION и TRANSACTION и передает их в запросе ODBC-драйверу. Как воспринимает этот запрос в соответствующем синтаксисе, можно посмотреть в трассировщике ODBC-драйвера.

Модуль связи с СУБД в Trace Mode 6 выполняет следующее:
- связывает каналы с полями таблиц БД;
- с учетом этого готовит/разбирает текст запросов только на уровне, необходимом для связи с аргументами;
- посылает запрос в ODBC-драйвер на исполнение, принимает результат и код завершения.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144


Icon 1 отправлено / posted      Профиль для / Profile for arkos           Редактировать/удалить сообщение / Edit/Delete Post 
В нашем проекте нужно отслеживать примерно 2000 параметров, приходящих из БД.
Мы пользуемся несколькими каналами CALL MOVE для посылки 1 во входные значения каналов CALL SQLQuery (примерно по 200 аргументов в каналах MOVE). Может быть, для улучшения быстродействия нужно использовать какой-нибудь другой способ посылки 1 в БД (например, программу). Подскажите, пожалуйста.

Сообщения / Posts 143 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Trace Mode 6 не управляет очередью SQL-запросов.
Если Вы одновременно генерируете много запросов, то очередность их реализации определяется ODBC-драйвером и его производительностью.
Если ODBC-драйвер не справляется с тем потоком запросов, который Вы пытаетесь организовать, Ваши запросы будут теряться, интенсивность запросов будет уменьшаться.
М.б., улучшит ситуацию ключ
" SQLMANY – отмена режима выполнения только одного SQL запроса одновременно (режим по умолчанию). "
в файле конфигурирования запуска узла.

Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
arkos
Forum Haunter / Завсегдатай форума
Участник № / Member № 6144


Icon 1 отправлено / posted      Профиль для / Profile for arkos           Редактировать/удалить сообщение / Edit/Delete Post 
Вся описанная ситуация происходит при установленом ключе SQLMANY. В любом случае спасибо за ответ!
Сообщения / Posts 143 | Из / From: Украина  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Garrison
Forum Member / Участник форума
Участник № / Member № 5981


Icon 1 отправлено / posted      Профиль для / Profile for Garrison           Редактировать/удалить сообщение / Edit/Delete Post 
Извиняюсь но я так и не уловил браузер sql запросов TM все же поддерживает оператор UNION или нет? Вот смотрите, выполняем простой запрос:
SELECT
members.temp_to #ARG_001#
FROM
members
WHERE
members.id = 1
прямо в браузере нажимаем "выполнить запрос" получаем "задать ARG_001=8" все у нас отлично значение правильное и записано в аргумент, далее строим запрос с оператором UNION

SELECT
members.temp_to #ARG_000#
FROM
members
WHERE
members.id = 1

UNION

SELECT
members.temp_to #ARG_001#
FROM
members
WHERE
members.id = 6

и при выполнении запроса получаем:

получить ARG_000=
задать ARG_001=8
задать ARG_001=14

это что за бред?
что значит получить ARG_000=?
почему два раза записать
задать ARG_001=8
задать ARG_001=14 ???
Значения то полученные из бд верные а вот что с запросом делает TM я чего то никак не пойму (кстати при этом в аргумент №1 реально вообще ничего не записывается)... Драйвер ODBС по моему не причем, трассировку не смотрел но два других приложения через него аналогичный запрос выполняют корректно. Любопытно что если значение WHERE делать в обоих запросах одинаковым то уже получаем:
задать ARG_000=14
получить ARG_001=
задать ARG_000=8
тоже бред но уже иначе выглядящий )))... В TM точно ошибок нет? а то вроде и нужно получить всего 28 значений из базы но не городить же для каждого условия where 28 разных запросов к бд!
Использую релиз 6.09

Сообщения / Posts 35 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
SQL-браузер Trace Mode 6 не поддерживает оператор UNION. В запросе не может быть 2 слова SELECT.
Сообщения / Posts 17083 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Открыть тему / Open Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2