|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
Добрый день! Суть проблемы - при изменении 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 --- Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 12:18 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
А почему Вы используете SetTrans а не SetTransObject? За всю практику никогда не наблюдал тормозов в момент присваивания. Лучше, конечно, такие вещи смотреть отладчиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 12:46 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
PaulJB, SetTrans, т.к. купленно очень маленькое кол-во пользователей БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 13:06 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
SetTrans копирует параметры транзакции и открывает новую - дублирующую Наоборот, надо использовать SetTransObject ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:20 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
spas2001, :-) Use SetTrans when you want PowerBuilder to manage the database connections automatically because you have a limited number of available connections Но это не важно - вопрос в был в другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:36 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
spas2001SetTrans копирует параметры транзакции и открывает новую - дублирующую Наоборот, надо использовать SetTransObject Та не. Все правильно они делают. Для SetTransObject надо постоянно держать открытым соединения на каждом клиенте. А SetTrans позволяет соединяться только при активности. Так что при малом лимите на кол-во соединений - самое то. автор(место определил выводом сообщений в строку состояния SetMicroHelp) Тут не факт что покажет правильно, т.к. прорисовка ГУЯ может не сразу срабатывать, а только при первом вызове какого-нибудь обработчика событий (например retrievestart). Тут надо что-то надежнее - например вывод в файл с указанием времени (cpu()). Ну или отладчиком - пошагово. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 14:36 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
То 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 15:02 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
deep14, думаю, что смена DataObject не причем. А для локализации причины можно сделать простые тесты: 0. Не взаимодействуйте с DW вообще при открытии окна. Тормоза исчезли? 1. Установите значение DataObject сразу в DW окна, а не через параметр. Тормоза исчезли? 2. Пусть будет установка через параметр, но не делайте Retrieve. Тормоза исчезли? 3. Замените SetTrans на SetTransObject. Тормоза исчезли? Если везде "нет", то причина в другом. :) Куда ещё посмотреть: - посмотрите все события DW связанные с Retrieve, может у вас там какой-то процесс висит, типа SetMicroHelp, который отрабатывается при получении каждой строки. ;) - может БД теперь используется "удаленно", а это при SetTrans действительно "тормоза". - SetTrans при отключении делает "commit/rollback", и тоже может давать "тормоза". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 16:06 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
spas2001, прошу прощения, если как-то задел - ни в коем случае не хотел как-нибудь обидеть. Вы все правильно говорите - для скорости нужно пользовать SetTransObject, но у я ограничен кол-вом подключений, поэтому и использую SetTrans. all, включил трассировку и она так же показала тормоз на выполнении присваивания DataObject - почти 6с ! - см картинку. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 16:09 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
AIS0. Не взаимодействуйте с DW вообще при открытии окна. Тормоза исчезли? да - почти - все равно пару 1-2 секунды возникает тормоз AIS1. Установите значение DataObject сразу в DW окна, а не через параметр. Тормоза исчезли? без изменений - 6с куда-то перешли, плюс 3 секунды на выборку как и было - см картинку. В open только settrans и retrieve. AIS2. Пусть будет установка через параметр, но не делайте Retrieve. Тормоза исчезли? на пару секунд быстрее - это те, которые тратились на retrieve. AIS3. Замените SetTrans на SetTransObject. Тормоза исчезли? еще в 2 раза медленнее, т.к. retrieve выполнился вместо 2-х секунд за около 9-ти и на прежнем месте тормоз тоже увеличился. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 16:59 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
Ура - причина найдена. Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо. Теперь надо разобраться почему некоторые dw открываются быстро - без опроса принтера, а некоторые тормозят. Всем огромное спасибо за мозговой штурм моей проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 17:34 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
На отчете наверное сразу PrintPreview установлено? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 17:47 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
deep14Ура - причина найдена. Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо. Прикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 18:37 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
Anatoly Moskovskydeep14Ура - причина найдена. Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо. Прикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :) Простите, но о чем речь идет? Просто интересно. Если в свойствах DW прописано имя принтера, либо стоит чек по умолчанию, то возможно и да, но ведь автор отключал (с его слов) полностью DW в окне. Тогда, что Вы имели ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 19:47 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
deep14Ура - причина найдена. Причина - тормознутость принтсервера. При выборе по-умолчанию другого сетевого принтера, эти 6с пропадают и отчет готовится как надо. Причина не в тормознутости принтсервера, а в кривых руках разработчиков PB - они подобного рода баги как минимум с 6 выправить не могут. Не нравятся ему некоторые принтеры... Anatoly MoskovskyПрикол. Я хотел спросить про доступность сетевого принтера. Но подумал - "не, ну вряд ли опять тормоза из-за принтера, сколько можно! " и не стал спрашивать :) А я сразу про это подумал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2012, 22:23 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
AISПростите, но о чем речь идет? Просто интересно. Если в свойствах DW прописано имя принтера, либо стоит чек по умолчанию, то возможно и да, но ведь автор отключал (с его слов) полностью DW в окне. Тогда, что Вы имели ввиду? Если в компе подключен сетевой принтер и он недоступен, то ПБ может подвиснуть на некоторое время в совершенно неожиданных местах. Этот баг проявляется даже иногда просто при открытии библиотки содержащей какое-нибудь ДВО в дереве library painter. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 00:23 |
|
Тормозит при изменении DataObject
|
|||
---|---|---|---|
#18+
Поэтому у меня по-умолчанию всегда виртуальный висит:) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2012, 13:57 |
|
|
start [/forum/topic.php?fid=15&gotonew=1&tid=1335481]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
13ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 246ms |
total: | 505ms |
0 / 0 |