Время выполнения SQL запросов

Сервер БД Historian, ранее InSQL

Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 2:39 pm

1. Простейшие запросы:
Код: Выделить всё
SELECT Tbl1001.DateTime Col1005,Tbl1001.Value Col1007 FROM Runtime.dbo.History Tbl1001 WHERE Tbl1001.TagName=N'GPP1_RP16_ElHistTgs.CI123EIWIS117_R' AND Tbl1001.DateTime>='2015-06-29 00:00:00.000' AND Tbl1001.DateTime<='2015-07-02 00:00:00.000' AND Tbl1001.wwResolution=(86400000) AND Tbl1001.wwRetrievalMode=N'Cyclic' AND Tbl1001.wwTimeStampRule=N'End' AND Tbl1001.OPCQuality>=(192) AND (Tbl1001.Value IS NOT NULL)

выполняются только после рестарта Historian (выполняются достаточно быстро в течении 1-2 секунд), через 3-5 минут после перезапуска, они перестают выполняться (отваливаются по таймауту).
В мониторе SQL Server при этом появляется множество запросов которые висят в ожидании с типом ожидания OLEDB

2. Не может ли причиной этого быть высокая фрагментация диска содержащего циркулярную область?
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Steelman63 » Вт июн 30, 2015 3:28 pm

1. а если попробовать так:
SELECT DateTime,Value
FROM Runtime.dbo.History
WHERE TagName=N'GPP1_RP16_ElHistTgs.CI123EIWIS117_R'
AND DateTime>='2015-06-29 00:00:00.000'
AND DateTime<='2015-07-02 00:00:00.000'
AND wwResolution=(86400000)
AND wwRetrievalMode=N'Cyclic'
AND wwTimeStampRule=N'End'
AND OPCQuality>=(192)
AND (Value IS NOT NULL)

2. все может быть
Steelman63
 
Сообщения: 313
Зарегистрирован: Ср авг 29, 2012 3:42 pm

Re: Время выполнения SQL запросов

Сообщение Генератор зла » Вт июн 30, 2015 3:46 pm

Steelman63 писал(а):2. все может быть

Вряд ли. К тому же, после перезапуска выборка отрабатывает "на ура", а через 10 минут "что-то произойтить".
Можно попробовать повторить выборку при остановленном Historian-е
+ Настроить счётчики производительности на загрузку ЦП, памяти, обращению к дискам.
+ Можно посмотреть ещё:
https://softwaresupportsp.invensys.com/ ... ctp=search
Vita est dolor.
Генератор зла
 
Сообщения: 2663
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 3:56 pm

1. Точно такой же результат.

2. Правильно ли я понимаю, что диск на котором находится циркулярная область необходимо дефрагментировать? Дефрагментация диска не помешает работе InSQLIndexing?

3. Заметил интересную вещь. Делаешь Shutdown (and disable) InSQL, после этого Enable (allow to run) InSQL, при этом запускается Retrieval, Indexing, OLE-DB provider, до тех пор пока не сделаешь "Start InSQL", любые запросы выполняются, причем очень быстро, как только "Start InSQL", какое- то время запросы выполняются (каждый раз разное время), а потом уходят в ожидание.
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 4:04 pm

Генератор зла писал(а):Вряд ли. К тому же, после перезапуска выборка отрабатывает "на ура", а через 10 минут "что-то произойтить".
Можно попробовать повторить выборку при остановленном Historian-е
+ Настроить счётчики производительности на загрузку ЦП, памяти, обращению к дискам.
+ Можно посмотреть ещё:
https://softwaresupportsp.invensys.com/ ... ctp=search

1. В предыдущем сообщении написал. При остановленном хисториане выборка работает "на ура"
2. Процессор занят в среднем на 15-20%, свободной памяти (физической) 2Гб
3. Счетчики производительности по диску, показывают, что % времени бездействия 99,5%, средняя длина очереди 0,238, а вот дальше начинается интересное. Средняя длина очереди на запись - 0,238, а средняя длина очереди на чтение - 0. Средняя скорость записи - 180кб/с, а средняя скорость чтения - 0кб/с.
4. Спасибо за ссылку, там я зарегистрировался уже, но так как с английским у меня совсем плохо, не пишу пока там ничего
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 4:25 pm

Через некоторое время, попытка выполнить любой запрос приводит к получению ошибки:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "INSQL" for linked server "INSQL" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing the query "SELECT Tbl1001.DateTime Col1005,Tbl1001.Value Col1007 FROM Runtime.dbo.History Tbl1001 WHERE Tbl1001.TagName=N'GPP1_RP16_ElHistTgs.CI123EIWIS117_R' AND Tbl1001.DateTime>='2015-06-29 00:00:00.000' AND Tbl1001.DateTime<='2015-07-02 00:00:00.000' AND Tbl1001.wwResolution=(86400000) AND Tbl1001.wwRetrievalMode=N'Cyclic' AND Tbl1001.wwTimeStampRule=N'End' AND Tbl1001.OPCQuality>=(192) AND (Tbl1001.Value IS NOT NULL)" for execution against OLE DB provider "INSQL" for linked server "INSQL".

В логах хисториана появляются три ошибки:
ERROR: Query terminated unexpectedly (10818;0;0;0;0, -2147024882, Недостаточно памяти для завершения операции.) [VSQL; Client.cpp; 1531; 1]

ERROR: insql_GetNextQueryResult failed; row_number, status: (5;1, 11) [VSQL; o_node.cpp; 378; 1]

ERROR: MDAS function insql_GetNextQueryResult returned error code (5;11) [VSQL; o_pdsqry.cpp; 4466; 1]

Непонятно почему ему памяти недостаточно
Изображение
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Генератор зла » Вт июн 30, 2015 4:35 pm

Error: The OLE DB provider "INSQL" for linked server "INSQL" reported an error. The provider reported an unexpected catastrophic failure".
SR NUMBER
10640
ANSWER
SR 103112804
InSQL DB Error
KNOWN ISSUE : CR L00066474
_ or DiscreteWideHistory with Nonexisting tag and Oledb will get unexpected catastrophic failure after the query is ran many times.
Install Patch 2 or later for InSQL Server v9.0
================================================================
Error: "The OLE DB provider "INSQL" for linked server 'INSQL' reported an error; the provider reported an unexpected catastrophic failure."
SR NUMBER
10513
ANSWER
Error: "The OLE DB provider "INSQL" for linked server 'INSQL' reported an error; the provider reported an unexpected catastrophic failure."
KNOWN ISSUE; CR L00066474 reported against InSQL 9.0 P01
Reported against InSQL 9.0 Patch01 under Change Request L00066474: "WideHistory queries containing non-existing tags will get unexpected catastrophic failure after the query is run many times. Client connections grow with each successive attempt."
Workaround for CR L00066474: Avoid running wide queries with non-existent tags
The workaround for this issue is to make sure your queries only include valid tags that are specified within the InSQL Runtime database.
Please review the release notes or Readme file for the current product patch to check if this issue is addressed by the patch. The current patch is available for download from the Wonderware Technical Support Site. Click here to go to the "Wonderware Technical Support" Web Page Download Area
For more information regarding this issue or the current status, contact Wonderware Technical Support or Product Marketing. Reference the Change Request (CR) number when inquiring about this issue.
Be sure to include your first and last name, company, and phone or E-Mail address where you can be reached.

Короче:
1. Убедитесь, что установлены актуальные SP и патчи на ПО WW
2. Убедитесь, что в запросе используются только существующие теги и поля.
Vita est dolor.
Генератор зла
 
Сообщения: 2663
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 4:45 pm

1. HistorianVersion 9,0,2,0368 (Enterprise). Сегодня на первой ноде кластера его переустановил и накатил 1 и 2 сервиспаки. Других сервиспакой как я понимаю на 9-й хисториан нет?
2. В запросах реально существующие теги и поля, я их взял из профайлера MSSQL когда формировал отчеты
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Генератор зла » Вт июн 30, 2015 5:44 pm

Тогда попробуйте сформировать запрос (или максимально к нему приближённый, но не редактированный руками) в AF Query и протестируйте его быстродействие.
Zelenin Valeriy писал(а):Сегодня на первой ноде кластера его переустановил и накатил 1 и 2 сервиспаки.

Так это ещё и кластер...
Vita est dolor.
Генератор зла
 
Сообщения: 2663
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Вт июн 30, 2015 6:11 pm

Генератор зла писал(а):Тогда попробуйте сформировать запрос (или максимально к нему приближённый, но не редактированный руками) в AF Query и протестируйте его быстродействие.
Так это ещё и кластер...

1. А что это такое и где его найти?
2. Кластер, от этого могут быть еще какие-то проблемы?
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Генератор зла » Вт июн 30, 2015 6:19 pm

Zelenin Valeriy писал(а):А что это такое и где его найти?

WW Active Factory. ПО для создания запросов, отчётов, трендов,...
Zelenin Valeriy писал(а):Кластер, от этого могут быть еще какие-то проблемы?

А с кластером их не бывает? Погасите один из узлов кластера и протестируйте на псевдобескластерном варианте.
Vita est dolor.
Генератор зла
 
Сообщения: 2663
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Время выполнения SQL запросов

Сообщение beachbear » Вт июн 30, 2015 7:56 pm

К дефрагментации диска и кластеру проблема отношения не имеет.
Скорее всего просто происходит повреждение памяти в OLE-DB провайдере при выполнении запроса.
Я бы посоветовал связаться с службой поддержки Wonderware и запросить все выпущенные заплатки для 9.0, которые касаются OLE-DB провайдера и Retrieval Service. Открывать новое расследование они, скорее всего, откажутся, поскольку 9.0 уже вышел из зоны официальной поддержки по причине почтенного возраста. Можно, конечно, поэкспериментировать с разными запросами и разными тэгами, попытаться нащупать где причина проблемы - конкретно в этом тэге или в типе запроса, но это уже как повезёт.
beachbear
 
Сообщения: 127
Зарегистрирован: Вт апр 21, 2009 2:55 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Ср июл 01, 2015 10:39 am

Генератор зла писал(а):WW Active Factory. ПО для создания запросов, отчётов, трендов,...
А с кластером их не бывает? Погасите один из узлов кластера и протестируйте на псевдобескластерном варианте.

Вторую ноду погасил, запросы выполнял из AFQuery, результат тот же, несколько минут работает, после этого отваливается по таймауту.
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение Zelenin Valeriy » Ср июл 01, 2015 11:02 am

beachbear писал(а):К дефрагментации диска и кластеру проблема отношения не имеет.
Скорее всего просто происходит повреждение памяти в OLE-DB провайдере при выполнении запроса.
Я бы посоветовал связаться с службой поддержки Wonderware и запросить все выпущенные заплатки для 9.0, которые касаются OLE-DB провайдера и Retrieval Service. Открывать новое расследование они, скорее всего, откажутся, поскольку 9.0 уже вышел из зоны официальной поддержки по причине почтенного возраста. Можно, конечно, поэкспериментировать с разными запросами и разными тэгами, попытаться нащупать где причина проблемы - конкретно в этом тэге или в типе запроса, но это уже как повезёт.

Спасибо, попробую в техподдержку обратиться.
По поводу типов запросов. Любой запрос по любому тегу в INSQL.Runtime.dbo.History не выполняется, в то же время запрос к INSQL.Runtime.dbo.Ana_lo_gLive выполняется.
Ну и запросы к INSQL.Runtime.dbo.History через некоторое время приводят к падению хисториана со следующими симптомами:
Множество ошибок:
ERROR: Timeout on lock request for TagInfoMap [KHMAU-ISUPTBD; BlockInfoMapCacheManager.cpp; 392; 1]

Множество обычных (белых) сообщений:
Database Error (703;ExecuteDetectorSQL: An error occurred while preparing the query "SELECT Tbl1001.DateTime Col1008 FROM Runtime.dbo.History T) [KHMAU-ISUPTBD-1; EventDatabase.cpp; 441; 1]

Database Error (703;ExecuteDetectorSQL: The OLE DB provider "INSQL" for linked server "INSQL" reported an error. The provider reported an unexp) [KHMAU-ISUPTBD-1; EventDatabase.cpp; 441; 1]

Event detection failed due to failed detector SQL (703;SysStatusEvent) [KHMAU-ISUPTBD-1; EventDetector.cpp; 594; 1]

Если запрос выполняется из SSMS то при выполнении получаешь ошибку
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "INSQL" for linked server "INSQL" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing the query "SELECT Tbl1001.DateTime Col1005,Tbl1001.Value Col1007 FROM Runtime.dbo.History Tbl1001 WHERE Tbl1001.TagName=N'GPP1_RP16_ElHistTgs.CI123EIWIS117_R' AND Tbl1001.DateTime>='2015-06-29 00:00:00.000' AND Tbl1001.DateTime<='2015-07-02 00:00:00.000' AND Tbl1001.wwResolution=(86400000) AND Tbl1001.wwRetrievalMode=N'Cyclic' AND Tbl1001.wwTimeStampRule=N'End' AND Tbl1001.OPCQuality>=(192) AND (Tbl1001.Value IS NOT NULL)" for execution against OLE DB provider "INSQL" for linked server "INSQL".
Zelenin Valeriy
 
Сообщения: 20
Зарегистрирован: Ср фев 18, 2015 5:12 pm

Re: Время выполнения SQL запросов

Сообщение beachbear » Ср июл 01, 2015 4:26 pm

Запрос на Live не идёт через блоки истории на диске, а просто вытаскивает последние полученные данные из ActiveImage для этого тэга.

Таймаут на загрузку метаданных с диска очень подозрителен. Посмотрите насколько велик размер файлов TAGS.DAT в блоках истории, через которые проходит интервал запроса. Может быть накопилось слишком много версий тэгов из-за большого количества модификаций данных и это приводит к наблюдаемой проблеме. Количесто версий тэга можно оценить скопировав TAGS.DAT в MYTAGS.TXT и открыв Notepad-ом подсчитать число строк с этим именем тэга.
beachbear
 
Сообщения: 127
Зарегистрирован: Вт апр 21, 2009 2:55 pm


Вернуться в Historian Server

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1