powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Память и PowerBuilder
18 сообщений из 18, страница 1 из 1
Память и PowerBuilder
    #32267333
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто объяснит, почему при Insert и Update все время съедается оперативная память (commit хоть после каждого Insert, Update)? Высвобождение происходит только после diconnect.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267338
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баго-фича, ИМХО... :)
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267359
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Баго-фича, ИМХО... :)

Какая?
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267462
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю так, при дисконнекте закрывается SetTransObject и соответственно прибиваются все внутренние кэши (дестроются) и сборщик мусора память освобождает.

При коммитах, кэши чистятся, но не прибиваются (иначе бы тормоз был) и посему лишняя память (отхапанная ранее) не освобождается.

Вот как это можно объяснить (скорее всего так и сделано), а как там реально - в sybase ^)) и то вряд-ли ответят...
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267481
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю так, при дисконнекте закрывается SetTransObject и соответственно прибиваются все внутренние кэши (дестроются) и сборщик мусора память освобождает.

При коммитах, кэши чистятся, но не прибиваются (иначе бы тормоз был) и посему лишняя память (отхапанная ранее) не освобождается.

Вот как это можно объяснить (скорее всего так и сделано), а как там реально - в sybase ^)) и то вряд-ли ответят...



Сжирание памяти наблюдается даже без использования DW, те в скрипте:"Insert Into tab1(val1, val2, ... ) Values(:v1, :v2, ... ))"
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267522
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А много жрет-то? Если это так критично - предлагаю отказаться от PB (в этом смысле он является черным ящиком) и все писать С++ & Нативный интерфейс СУБД (например у ASA SQL препроцессор есть для С) - вот там можно будет все отследить до последнего байта...
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267612
AndrewN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё попробывать GarbageCollect() вызвать.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267630
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А много жрет-то? Если это так критично - предлагаю отказаться от PB (в этом смысле он является черным ящиком) и все писать С++ & Нативный интерфейс СУБД (например у ASA SQL препроцессор есть для С) - вот там можно будет все отследить до последнего байта...

Жрёт ровно столько, или почти столько же, сколько весят данные для вставки.
Интерфейс а-ля С конечно хорошо, но данные надо умно-хитро раскладывать в разные места.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267685
Sergey Rigkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такаой баг для 9.0 и MS SQLServer (отжирается около 100 М :( ), Sybase выслали они нам новую dll и все, вроде, нормально
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267687
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иех, давно это было... В смысле, давненько я интересовался этим вопросом, потому и приврать могу, так что все нижесказанное - ИМХО! :)

SQLCA (и прочие подобные) откусывают память под свой кэш по размеру максимального пропускаемого SQL запроса. При очередном запросе ента гадость сравнивает размер запроса с размером кэша и если кэш меньше - увеличивает его. Чистки мусора и прочие пляски с бубном - не помогают. При дисконнекте SQLCA фактически дестроится и потому кэши рухають и память высвобождается. Так что, такова селява... :))

ЗЫ: Повторяю и наставиаю - усе сказаное - ИМХО! :)
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267704
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из всего вышесказанного - вот что можно посоветовать, попробуйте делить вставку блоками и после каждого блока коммит, может поможет? В крайнем случае, после коммита - ретрив... При такой схеме кэши не должны расти больше чем максимальный объем кэша одного блока.

Если не поможет, значит все вышеперечисленные схемы грешат :(
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267715
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще что вспомнил, в бытность играясь с ягуаром

После инициализации DW (можно даже после ретрива) сохранять его полностью (GetFullState). И после отработки каждого блока (занесение данных, Save, Commit) делать GetFullState...

Правда не уверен в сильном эффекте...
Ну и еще в форумах было предложение в свое время дисконнектить после каждого Save. И коннектить заново перед новым Save()... Тоже может помочь :)). Удачи.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267795
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ikar
Иех, давно это было... В смысле, давненько я интересовался этим вопросом, потому и приврать могу, так что все нижесказанное - ИМХО! :)

SQLCA (и прочие подобные) откусывают память под свой кэш по размеру максимального пропускаемого SQL запроса. При очередном запросе ента гадость сравнивает размер запроса с размером кэша и если кэш меньше - увеличивает его. Чистки мусора и прочие пляски с бубном - не помогают. При дисконнекте SQLCA фактически дестроится и потому кэши рухають и память высвобождается. Так что, такова селява... :))

ЗЫ: Повторяю и наставиаю - усе сказаное - ИМХО! :)


Специально делал тест типа:
do while i < 10000
Update tab1
Set column1 = :val
where id = :val_id
;
loop
Всеравно сжирает методично и постоянно по маленькому кусочку.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267848
Sergey Rijkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, просьба. При постановке вопроса указывать версию и билд PB, а также сервак БД (при необходимости) !

2Геннадич
Сжирание памяти наблюдается даже без использования DW, те в скрипте:"Insert Into tab1(val1, val2, ... ) Values(:v1, :v2, ... ))"
А что значит и просто с использованием dw сжирается :) ?, поясни.

2andy753
Ну и еще в форумах было предложение в свое время дисконнектить после каждого Save.
Ага и еще пулл коннектов написать итд :), каждый коннект может давольно много времени занимать :(, что зависти от базы и бл.

Также можно поиграться с SetTrans и с SetTransObject
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267877
Геннадич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Sergey Rijkov
Уважаемые, просьба. При постановке вопроса указывать версию и билд PB, а также сервак БД (при необходимости) !

2Геннадич
Сжирание памяти наблюдается даже без использования DW, те в скрипте:"Insert Into tab1(val1, val2, ... ) Values(:v1, :v2, ... ))"
А что значит и просто с использованием dw сжирается :) ?, поясни.



1 - PB Enterprise 6.5.1 , Oracle 8.1.5

2 - Имеется приложение, которое закачивает данные из файловых источников в БД
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267935
cbusel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За много лет работы на PB единственный раз столкнулся с проблемой памяти, когда забыл сделать destroy для datastore.
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32267956
Sergey Rijkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хмм... странно, недавно делал примерно тоже самое, но все нормально. Как то давным давно, встречался с таким казусом :)

DECLARE lc_cur DYNAMIC CURSOR FOR SQLSA ;
ls_sql = "..."
PREPARE SQLSA FROM :ls_sql ;
for i ...
OPEN DYNAMIC lc_cur USING :LN_PK_VALUE;
FETCH lc_cur INTO :LN_REZ;
CLOSE lc_cur;
next
Дык вот этот кусок страшно с гем. прогр. жрал память.
И что вы думаете ? Спасло вот что ...

...
FETCH lc_cur INTO :LN_REZ;
Sleep (10) CLOSE lc_cur;
Sleep (10)
...

-------------
Сергей Рыжков
ЗАО "НПО Балтрос"
http://pbl.narod.ru (PowerBuilder + Oracle)
...
Рейтинг: 0 / 0
Память и PowerBuilder
    #32268051
Sergey Rijkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и еще , чтоб не рсслоблялись :)

Официально признаннй баг (хотя сибес никогда ничего не признает!)
При использовании PB 7 и MS SQL директ драйвера возникает утечка пямяти при долгом коннекте. (при dissconect все возвращается).

Рекомендуют: The fix is to put something in the DBParm property of the SQLCA object. Something like "Application='MyApp'" or whatever. In the development environment, edit the connection properties and make sure something is in the Application Name or Workstation Name on the Network tab

О как :), непостигаемый бЫлдер :)

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


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