Вниз
Скачать: CL | DM;

Проблема с памятью   Найти похожие ветки 

← →
pavel_guzhanov ©   (2009-01-20 09:15) [0]

Задача следующая - сверить данные в двух базах. Одна база DB2, вторая - FireBird 1.5.4. К DB2 подключаюсь через ADO, к FireBird - IBX
Получаю значение ключевого поля запросом, и по этому значению в цикле получаю данные из баз. Сверяю их по полям, обрабатываю результаты сверки.

После обработки более 2000 записей (каждый раз разное количество), получаю исключение Out of memory при открытии Query FireBird.

Выглядит это примерно вот так:

 IBQ.Close;
 IBQ.SQL.Clear;
 IBQ.SQL.Add("select firstname, middlename, lastname, birth_date, sex, inn from naturals where selfnumber=:n");
 ADOQSn.Close;
 ADOQSn.SQL.Clear;
 ADOQSn.SQL.Add("select id, selfnumber from "FORM"."PERSON" where selfnumber like """+"10НПО%"+""" order by selfnumber");
 ADOQPegas.Close;
 ADOQPegas.SQL.Clear;
 ADOQPegas.SQL.Add("select ID_PERSON, FIRSTNAME, MIDDLENAME, LASTNAME,");
 ADOQPegas.SQL.Add("BIRTH_DATE, SEX, INN");
 ADOQPegas.SQL.Add("from "FORM"."NATURAL" where id_person =:n");
   ADOQSn.Open;
   while not ADOQSn.Eof do
   begin
     ADOQPegas.Close;
     IBQ.Close;
     ADOQPegas.Parameters[0].Value:= ADOQSn.FieldByName("id").AsInteger;
     ADOQPegas.Open;
     IBQ.Params[0].Value:= ADOQSn.FieldByName("selfnumber").AsString;
     IBQ.Open; // здесь вылетает ошибка после более чем 2000 итераций
// далее сравнение данных по полям


Где может возникать проблема с памятью? И как это победить?


← →
Медвежонок Пятачок ©   (2009-01-20 10:00) [1]

убрать этот замысловатый алгоритм и сделать простой цикл
на открытие/закрытие простого запроса

потом смотреть у какого именно движка появляется эффект. если он вообще появляется


← →
Виталий Панасенко(дом)   (2009-01-20 12:30) [2]

UniDirectional=True


← →
Правильный$Вася   (2009-01-20 15:28) [3]

может, открытие всего 2 наборов данных было бы эффективнее, чем открывать в цикле столько раз, сколько записей?


← →
pavel_guzhanov ©   (2009-01-22 11:20) [4]


> UniDirectional=True

Спасибо, это помогло.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
15-1257122587
Eraser
2009-11-02 03:43
2010.01.03
Протокол и GNU


15-1256938211
Юрий
2009-10-31 00:30
2010.01.03
С днем рождения ! 31 октября 2009 суббота


15-1257325741
brother
2009-11-04 12:09
2010.01.03
Формирование анаглифного изображения


15-1256845098
koha!
2009-10-29 22:38
2010.01.03
Упал Linux


15-1257059938
И Павел
2009-11-01 10:18
2010.01.03
Кому выпадало такое же счастье?




   Наверх