Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / "Замирание" программы при работе с Cache через Factory. / 7 сообщений из 7, страница 1 из 1
18.06.2008, 18:57
    #35381178
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
Имеем программу, в которой на фоновом потоке периодически выполняются SQL запросы к БД.
И вот что заметил, в момент первого исполнения метода Next после Open, если SQL запрос достаточно серьезный (удалось построить запрос, выполнявшийся больше пяти минут), программа останавливается, в том числе главный поток, на котором графический интерфейс работает.
Сие весьма неприятно.
Что посоветуете?
На данный момент есть три идеи.
1. Сделать не фоновый поток, а независимое приложение, которое будет делать запросы и передавать результаты в основную программу.
2. Использовать какой-нибудь другой метод доступа, пока непонятно какой.
3. Как-то что-то настроить, чтобы Factory не чудил (представляется маловероятным).
Виктор
...
Рейтинг: 0 / 0
18.06.2008, 23:16
    #35381455
VadimF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
Какая у Вас версия Cache'?
Какое средство разработки (Delphi, .Net, ...)?
Общались с Вашим техническим консультантом InterSystems?

Вадим
...
Рейтинг: 0 / 0
19.06.2008, 10:38
    #35381955
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
To Hisbreht Victor
Вы используете один Factory в основном и фоновом потоках или в каждом свой?
Сейчас есть новая библиотека CacheActiveX.dll. Лучше использовать её вместо старой CacheObject.dll.

Hisbreht Victorудалось построить запрос, выполнявшийся больше пяти минут
Долго. Сколько возвращается данных: тысячи, миллионы? Если ускорить запрос всё же не получается, можно вызывать запрос асинхронно, воспользовавшись, например, классом %ScrollableResultSet и методом SetOutput у Factory.
...
Рейтинг: 0 / 0
19.06.2008, 19:03
    #35383669
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
Проблема решилась странным способом.

Сначала было так. Несколько тредов, общающихся с БД, у каждого свой объект Factory. Все операции с объектом от создания до изничтожения производились на своем персональном треде этого объекта.

Изменение было внесено следующее, с моей точки зрения неадекватное результату и здравому смыслу:
Теперь все объекты создаются на основном треде, DynamicSQL и Execute вызываются там же, а все Next и завершение - уже на треде. Проблема тут же исчезла.
...
Рейтинг: 0 / 0
19.06.2008, 19:21
    #35383707
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
servitTo Hisbreht Victor Сейчас есть новая библиотека CacheActiveX.dll. Лучше использовать её вместо старой CacheObject.dll.А это как? Там новый интерфейс или просто новая версия библиотеки?

servit Hisbreht Victorудалось построить запрос, выполнявшийся больше пяти минут
Долго. Сколько возвращается данных: тысячи, миллионы? Если ускорить запрос всё же не получаетсяЗаписей не так уж и много, две связанные таблички под две сотни тысяч записей. Просто запрос был сконструирован совершенно неправильно. После переконструирования время выполнения уменьшилось до нескольких секунд.
Пять минут, кстати, субъективное время, с секундомером не засекал, так что реальное может оказаться несколько меньше.
...
Рейтинг: 0 / 0
20.06.2008, 09:48
    #35384223
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
Hisbreht VictorА это как? Там новый интерфейс или просто новая версия библиотеки?
Improved ActiveX Bindings
...
Рейтинг: 0 / 0
20.06.2008, 20:42
    #35386108
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Замирание" программы при работе с Cache через Factory.
servit Hisbreht VictorА это как? Там новый интерфейс или просто новая версия библиотеки?
Improved ActiveX Bindings
Попробовал простой заменой. Пока получил только исключения при попытке выполнить SQL запрос.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / "Замирание" программы при работе с Cache через Factory. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]