Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IB7.1 очень большой расход памяти сервером [D2005, XP]


Один ©   (2007-03-16 16:03:00) 

1.
function Query(const Q: String): TIbDataset;
var iTrn: TIbTransaction;
begin

 if (cfmDesktop<>nil) then begin
   cfmDesktop.imConnect.Show;
   cfmDesktop.imConnect.Update;
 end;
 iTrn := TIbTransaction.Create(nil);
 iTrn.DefaultDatabase := dmGlobal.ibDatabase;
 Result := TIbDataSet.Create(nil);
 Result.Database := dmGlobal.ibDatabase;
 Result.Transaction := iTrn;
 Result.SelectSQL.Text := Q;
 Result.Active :=True;
 try
   Result.Prepare;
 except
   Result.Close;
 end;
 if (cfmDesktop<>nil) then cfmDesktop.imConnect.Hide;
end;


2.
function FinalizeQuery(var iDS: TIbDataSet): Boolean;
begin
 Result := True;
 try
   iDS.Close;
   iDS.Free;
 except
   Result := False;
 end;
end;


Подскажите, пожалуйста. Может быть, я где-то не завершаю верно запрос к БД? Пока записей в БД 100-200 ещё терпимо, но больше 200 - жутко медленная работа + разрастание ibserver.exe до 100-150 Мбайт при каждом запросе...


Один   (2007-03-17 07:57:00) [1]

Desdechado это не преднамеренное... в куках сохранилось, да и какая разница!
Sergey13 Потому что хотелось какой-то универсальности в выполняемости запросов... Форм много, и писать много код как-то не хочется. Разве так нельзя?


Sergey13   (2007-03-16 17:00:00) [2]

> [0] Один   (16.03.07 16:03)

А какой смысл во всей этой бодяге? Почему нельзя просто выполнить запрос там, откуда это вызывается?


Desdechado   (2007-03-16 16:54:00) [3]

Нарушение п.5 правил: "Запрещается Преднамеренное использование разных ников в одной ветке."

> поподрбнее?
Это к тебе вопрос.


Крик   (2007-03-16 16:15:00) [4]


> Все зависит от запроса и структуры данных.

а поподрбнее?


> убрать нафиг.

а можно начинающим подсказать, как правильно датасет обрабатывать? :-)


DrPass   (2007-03-16 16:13:00) [5]


> try
>    Result.Prepare;
>  except
>    Result.Close;
>  end;

Как минимум, убрать нафиг. Насчет почему столько памяти жрет - неизвестно. Впрочем, мне еще не приходило в готову вызывать prepare после открытия датасета :)


Desdechado   (2007-03-16 16:12:00) [6]

Все зависит от запроса и структуры данных.

ЗЫ var iDS: TIbDataSet - зачем тут VAR ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо