Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Базы";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
15-1257328731
Kolan
2009-11-04 12:58
2010.01.03
SQLite в Delphi 2009


11-1209885490
ForestGamp
2008-05-04 11:18
2010.01.03
OnQueryEndSession


15-1256942264
GDI+
2009-10-31 01:37
2010.01.03
Кстати, а почему люди до сих пор сидят на модемах?


15-1257173342
Иксик
2009-11-02 17:49
2010.01.03
Есть ли возможность вынести javascript события типа onclick


15-1257024611
Юрий
2009-11-01 00:30
2010.01.03
С днем рождения ! 1 ноября 2009 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский