powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Тормозит при изменении DataObject
18 сообщений из 18, страница 1 из 1
Тормозит при изменении DataObject
    #38028294
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Суть проблемы - при изменении DataObject программа подвисает.

Есть окно, которое предназначено для предпросмотра отчетов. В окне есть dw_1. Окно открывается с параметром в котором передаются имя датавиндовс отчета, параметры для выборки и прочей красивости.
В событии Open окна предпросмотра примерно так:
...
разбираем переданные параметры.
dw_1.DataObject = "имя dw отчета"
dw_1.SetTrans(SQLCA)
dw_1.Retrieve(параметры)
...
так вот в момент присваивания имени dw происходит подвисание на несколько секунд (место определил выводом сообщений в строку состояния SetMicroHelp).
Понятно, что потом еще какое-то время на выборку, но подвисание при смене DataObject в разы дольше, чем сама выборка retrieve.

Раньше пользователи не замечали тормозов в этом месте. К сожалению, я не могу сказать в какой момент (после каких действий с приложением или базой) появились тормоза. По времени совпадало с переходом ASA c 8 на 9 и я все время думал, что тормозит база. Как теперь выяснилось, сам запрос выполняется моментально - выбирается всего одна записть по ID. Это происходит с любым отчетом - не конкретным.
Изначально программа начинала писаться на 9 версии, но после миграции на 11 версию тормозов не наблюдалось.

Подскажите, пожалуйста, где копать, на что надо обратить внимание?

Спасибо.

PB11.2 (9097) - свежЕе вроде не накатить.
база SQL Anywhere 10.0.1.3415

---
Дмитрий
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028392
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему Вы используете SetTrans а не SetTransObject?
За всю практику никогда не наблюдал тормозов в момент присваивания.
Лучше, конечно, такие вещи смотреть отладчиком.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028440
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulJB,

SetTrans, т.к. купленно очень маленькое кол-во пользователей БД.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028639
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetTrans копирует параметры транзакции и открывает новую - дублирующую
Наоборот, надо использовать SetTransObject
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028681
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,

:-)

Use SetTrans when you want PowerBuilder to manage the database connections automatically because you have a limited number of available connections

Но это не важно - вопрос в был в другом.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028682
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001SetTrans копирует параметры транзакции и открывает новую - дублирующую
Наоборот, надо использовать SetTransObject
Та не. Все правильно они делают.
Для SetTransObject надо постоянно держать открытым соединения на каждом клиенте.
А SetTrans позволяет соединяться только при активности. Так что при малом лимите на кол-во соединений - самое то.

автор(место определил выводом сообщений в строку состояния SetMicroHelp)
Тут не факт что покажет правильно, т.к. прорисовка ГУЯ может не сразу срабатывать, а только при первом вызове какого-нибудь обработчика событий (например retrievestart).
Тут надо что-то надежнее - например вывод в файл с указанием времени (cpu()).
Ну или отладчиком - пошагово.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028754
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То deep14
Не надо меня тыкать, я использовал этот метод, в курсе его преимуществ и недостатков, проблема именно во времени на connect/disconnect. Help тоже читать умею
SetTrans copies the values from a specified transaction object to the internal transaction object for the DataWindow control or DataStore.
For better performance, however, you should use SetTransObject.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028915
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deep14,
думаю, что смена DataObject не причем.
А для локализации причины можно сделать простые тесты:
0. Не взаимодействуйте с DW вообще при открытии окна. Тормоза исчезли?
1. Установите значение DataObject сразу в DW окна, а не через параметр. Тормоза исчезли?
2. Пусть будет установка через параметр, но не делайте Retrieve. Тормоза исчезли?
3. Замените SetTrans на SetTransObject. Тормоза исчезли?

Если везде "нет", то причина в другом. :)

Куда ещё посмотреть:
- посмотрите все события DW связанные с Retrieve, может у вас там какой-то процесс висит, типа SetMicroHelp, который отрабатывается при получении каждой строки. ;)
- может БД теперь используется "удаленно", а это при SetTrans действительно "тормоза".
- SetTrans при отключении делает "commit/rollback", и тоже может давать "тормоза".
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38028920
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,
прошу прощения, если как-то задел - ни в коем случае не хотел как-нибудь обидеть. Вы все правильно говорите - для скорости нужно пользовать SetTransObject, но у я ограничен кол-вом подключений, поэтому и использую SetTrans.

all,
включил трассировку и она так же показала тормоз на выполнении присваивания DataObject - почти 6с ! - см картинку.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029029
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AIS0. Не взаимодействуйте с DW вообще при открытии окна. Тормоза исчезли?
да - почти - все равно пару 1-2 секунды возникает тормоз

AIS1. Установите значение DataObject сразу в DW окна, а не через параметр. Тормоза исчезли?
без изменений - 6с куда-то перешли, плюс 3 секунды на выборку как и было - см картинку. В open только settrans и retrieve.

AIS2. Пусть будет установка через параметр, но не делайте Retrieve. Тормоза исчезли?
на пару секунд быстрее - это те, которые тратились на retrieve.

AIS3. Замените SetTrans на SetTransObject. Тормоза исчезли?
еще в 2 раза медленнее, т.к. retrieve выполнился вместо 2-х секунд за около 9-ти и на прежнем месте тормоз тоже увеличился.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029099
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура - причина найдена.
Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо.

Теперь надо разобраться почему некоторые dw открываются быстро - без опроса принтера, а некоторые тормозят.

Всем огромное спасибо за мозговой штурм моей проблемы.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029119
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На отчете наверное сразу PrintPreview установлено?
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029192
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deep14Ура - причина найдена.
Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо.

Прикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :)
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029257
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskydeep14Ура - причина найдена.
Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо.

Прикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :)
Простите, но о чем речь идет? Просто интересно.
Если в свойствах DW прописано имя принтера, либо стоит чек по умолчанию, то возможно и да, но ведь автор отключал (с его слов) полностью DW в окне. Тогда, что Вы имели ввиду?
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029418
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deep14Ура - причина найдена.
Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо.
Причина не в тормознутости принтсервера, а в кривых руках разработчиков PB - они подобного рода баги как минимум с 6 выправить не могут. Не нравятся ему некоторые принтеры...

Anatoly MoskovskyПрикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :)
А я сразу про это подумал :)
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38029492
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISПростите, но о чем речь идет? Просто интересно.
Если в свойствах DW прописано имя принтера, либо стоит чек по умолчанию, то возможно и да, но ведь автор отключал (с его слов) полностью DW в окне. Тогда, что Вы имели ввиду?
Если в компе подключен сетевой принтер и он недоступен, то ПБ может подвиснуть на некоторое время в совершенно неожиданных местах.
Этот баг проявляется даже иногда просто при открытии библиотки содержащей какое-нибудь ДВО в дереве library painter.
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38030218
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому у меня по-умолчанию всегда виртуальный висит:)
...
Рейтинг: 0 / 0
Тормозит при изменении DataObject
    #38030369
deep14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AIS... но ведь автор отключал (с его слов) полностью DW в окне. Тогда, что Вы имели ввиду?

я отключал и задержка почти пропадала - о чем я и писал, что тормоза исчезли.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Тормозит при изменении DataObject
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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