Страница 1 из 1
Тормозит запрос текущих данных с InSQL 8.0
Добавлено:
Ср окт 13, 2010 4:18 pm
alextim
Всем добрый день!!
Для периодического (1 раз в секунду) запроса текущих данных по 6-ти тегам из базы Runtime использую скрипт:
USE Runtime
DECLARE @pr1 nvarchar(256)
DECLARE @pr2 nvarchar(256)
DECLARE @pr3 nvarchar(256)
DECLARE @pr4 nvarchar(256)
DECLARE @pr5 nvarchar(256)
DECLARE @pr6 nvarchar(256)
SET @pr1 = :par1
SET @pr2 = :par2
SET @pr3 = :par3
SET @pr4 = :par4
SET @pr5 = :par5
SET @pr6 = :par6
SELECT TagName, InSQLTime = CURRENT_TIMESTAMP, DateTime = convert(varchar, DateTime,113), Value, Quality
FROM v_Live /*v_АналогЛив */
WHERE TagName = @pr1
or TagName = @pr2
or TagName = @pr3
or TagName = @pr4
or TagName = @pr5
or TagName = @pr6
Данные по 4-м из 5-ти запросов возвращаются мгновенно, а каждый 5-й "тормозит" 3-4 секунды. Никак не найду причину. Подскажите, где порыться?
Добавлено:
Чт окт 14, 2010 4:20 am
Klinkmann_Msk
To alextim:
Попробуйте протестировать запрос, сформированный с помощью ActiveFactory.
Добавлено:
Чт окт 14, 2010 11:20 am
alextim
Аналогичная ситуация и с запросом, сформированным AF. Уточнение: ответ "подвисает" на 3 секунды каждые 3 секунды. Вероятно всё же, что проблема в сервере...
Добавлено:
Чт окт 14, 2010 11:35 am
Klinkmann_Msk
To alextim:
Осталось уточнить, какой именно сервер. WW или MS.
Добавлено:
Чт окт 14, 2010 2:14 pm
alextim
To Klinkmann_Msk:
Если я правильно понял, Вы имеете ввиду какой именно из серверов привносит задержку? А каким образом это можно проверить?
Может есть спец. API или SDK для WW InSQL, чтобы исключить MS SQL (запрашивать данные не SQL-запросом)?
versioninfo: Wonderware IndustrialSQL Server 8.0 на MS SQL Server 2000
Добавлено:
Пт окт 15, 2010 5:16 am
Klinkmann_Msk
To alextim:
"А каким образом это можно проверить?"
Интересный вопрос.
Можно попробовать проанализировать показатели загрузки ЦП и памяти на момент исполнения запроса.
Возможно, мешает антивирусное ПО.
Если используется HyperTrading, то его необходимо отключить.
Добавлено:
Вс окт 17, 2010 6:00 pm
skom
Может поможет добавление строки SET NOCOUNT ON вначале запроса?
Правда в случае работы с инсиквелом, я не пробовал так делать.
Добавлено:
Ср окт 20, 2010 9:33 am
alextim
TO skom
SET NOCOUNT ON никак не повлияло (((
Добавлено:
Ср окт 20, 2010 12:58 pm
skom
alextim писал(а):TO skom
SET NOCOUNT ON никак не повлияло (((
Можно ещё в настройках инсиквела поставить, чтобы он кэшировал например последние 2 недели.
Добавлено:
Чт окт 21, 2010 5:20 pm
alextim
TO skom
Можно ещё в настройках инсиквела поставить, чтобы он кэшировал например последние 2 недели
Как?
И вот еще что заметил. После перезапуска сервера эффект "подвисания" некоторое время заметно меньше. В процессе работы (при запросах) MS SQL постепенно занимает всю свободную память Windows (~ 2ГБ). При этом начинают подтормаживать закпросы к InSQL. Может как-то можно граничить "аппетиты" MS SQL?
Добавлено:
Пт окт 22, 2010 2:30 am
beachbear
alextim писал(а):Может как-то можно граничить "аппетиты" MS SQL?
MS SQL Server, который установлен на машине с Wonderware Historian, надо ОБЯЗАТЕЛЬНО ВСЕГДА ограничивать по памяти.
SQL Server думает, что он один самый важный в системе и оптимизирует себя невзирая на другие процессы.
В разных версиях SQL Server-а это ограничение конфигурируется в разных местах.
Спросите у Великого и Могучего Гугла про конкретно вашу версию, он всё знает.
Для 2GB RAM, я бы больше 400MB SQL Server-у бы не давал.
Добавлено:
Пт окт 22, 2010 4:16 am
alextim
to beachbear
Спасибо за разъяснения. Если не секрет, источник информации - личный опыт или чьи-то официальные рекомендации?
Добавлено:
Пт окт 22, 2010 9:47 am
skom
alextim писал(а):TO skom Можно ещё в настройках инсиквела поставить, чтобы он кэшировал например последние 2 недели
Как?
И вот еще что заметил. После перезапуска сервера эффект "подвисания" некоторое время заметно меньше. В процессе работы (при запросах) MS SQL постепенно занимает всю свободную память Windows (~ 2ГБ). При этом начинают подтормаживать закпросы к InSQL. Может как-то можно граничить "аппетиты" MS SQL?
Параметр HistoryDaysAlwaysCached, находится в разделе Parameters.
The duration, in days, for which history block information is always loaded in memory. The default is 0.
Добавлено:
Пт окт 22, 2010 4:49 pm
beachbear
alextim писал(а):to beachbear
Если не секрет, источник информации - личный опыт или чьи-то официальные рекомендации?
- Официальные рекомендации из личного опыта
Добавлено:
Пт окт 22, 2010 5:01 pm
beachbear
skom писал(а):Параметр HistoryDaysAlwaysCached, находится в разделе Parameters.
The duration, in days, for which history block information is always loaded in memory. The default is 0.
В данном случае этот параметр не окажет никакого влияния, поскольку данные достаются не из History-блоков, а из Live, то есть просто читаются последние известные значения из ActiveImage - фактически из памяти.
При этом необходимые метаданные тэгов уже пристутсвуют в памяти и не подгружаются из History-блоков.
Наблюдаемое поведения вполне объяснимо если система виртуальной памяти уходит в обработку page faults при недостатке свободной физической памяти.