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

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

TIBQuery и Out of Memory (help) [D6, IB6.x]


Страницы:   1 2

A_Gura ©   (2002-12-16 06:27:00) 

Люди!!!! В чем проблема???
Использую IBX TIBQuery. Из файла читаю запись, проверяю ее наличие в БД (запрос на выборку), если запись отсутствует - вставляю ее в БД (insert).

Записей много!!!

Короче при выполнении запроса на выборку большое кол-во раз (более 2000) вываливается ошибка Out of Memory. Сразу добавлю: я сам память не выделяю (т.е. это не моя ошибка)...


A_Gura   (2002-12-25 06:22:00) [1]

При динамическом создании и уничтожении TIBQuery, все работает... Ура!


Johnmen   (2002-12-17 15:29:00) [2]

>Max Zyuzin © (17.12.02 15:17)

Нет. Это автору про первую тр-ю... :-)

>A_Gura (17.12.02 15:07)

Попробуй...Но, думаю, не поможет...


Max Zyuzin   (2002-12-17 15:24:00) [3]

>A_Gura (17.12.02 15:07)
И еще в догонку... попробуй делать не CommitRetaining а просто Commit может тут какие "хвосты" остаются... (и соответственно Rollback)


Max Zyuzin   (2002-12-17 15:17:00) [4]

>A_Gura (17.12.02 15:07)
Думаю, что так будет еще хуже...

>Johnmen © (17.12.02 15:02)
Если это мне :) то просто мне любезно прислали кусок кода :)) там транзакции завершаются после пары сотен вставок открываний :)
Я понимаю, что это не так уж и много, но мало ли что...


A_Gura   (2002-12-17 15:07:00) [5]

Попробую... Но если это утечка памяти у TIBQuery, то можно попробовть его динамический создавать и по завершении транзакции уничтожать. Мне кажется должно помочь.


Johnmen   (2002-12-17 15:02:00) [6]

1)StartTransaction
2)Получить НД
3)Поработать с НД
4)Закрыть НД
5)Commit

И что ?


Max Zyuzin   (2002-12-17 15:00:00) [7]

Что бы было меньше телодвижений в рамках транзакции...


A_Gura   (2002-12-17 14:59:00) [8]

Не пойму зачем. Чего ты от этого эксперимента ожидаешь?


Max Zyuzin   (2002-12-17 14:54:00) [9]

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


A_Gura   (2002-12-17 14:51:00) [10]

Дык прикол в том, что глюк вываливается во время запросов на выборку, а не вставки. Вставка работает превосходно.


Johnmen   (2002-12-17 14:44:00) [11]

Проведи эксперимент :
1) В рамках одной транзакции получаешь НД, используя TIBDataSet
2) В рамках других делаешь вставки, причем с каждый раз с подтверждением тр-ии...

Каков результат ?


A_Gura   (2002-12-17 14:29:00) [12]

Один человек говорит, что заметил эту ошибку почти 2 года назад... Ну и как теперь с ней бороться... Надо очень срочно... Работа стоит.


A_Gura   (2002-12-16 11:03:00) [13]

Установлена версия IBX 6.04... В 6.05 вроде только поддержка ib7 добавлена.


Johnmen   (2002-12-16 10:55:00) [14]

Похоже проблема в утечке памяти при использовании TIBQuery.
Хотя лично я не сталкивался, т.к. не пользую TIBQuery для получения НД. Попробуй проапдейтить IBX. Возможно багов будет меньше.


A_Gura   (2002-12-16 10:32:00) [15]

Сюда не входит :)
Всегда пожалуйста ;)


Max Zyuzin   (2002-12-16 10:31:00) [16]

>A_Gura (16.12.02 10:01)
Спасибо, конечно... я имел ввиду сюда в форум :)


A_Gura   (2002-12-16 10:06:00) [17]

Насчет ХП. Я полностью согласен что будет быстрее. Но, во-первых, такая процедура (т.е. код) универсальна. Во-вторых, это уже дело принципа, хочу понять в чем проблема.


A_Gura   (2002-12-16 10:01:00) [18]

Мылом ушло


Sergey Masloff   (2002-12-16 09:43:00) [19]

A_Gura
Ну я чего-то не понимаю. Ну у меня тоже есть загрузка из XML. Непонятно почему не подходят ХП? И несколько тысяч-это совсем немного записей.
ХП может вставлять и в несколько таблиц, да и непонятно в чем проблема написать один раз несколько ХП?
Зато смотри: с ХП тебе не нужно проверять наличие записи в таблице. Просто гонишь свой XML до конца, а ХП сама проверяет - есть или нет такая записю. Причем это делает на порядок быстрее чем ты своим динамически сформированным XML.
Кстати, пример немного не в тему. У меня была выгрузка базы в XML средствами клиента на Delphi. Потом я переделал ее на ХП. выгрузка которая шла 3-7 минут стала выполняться мгновенно (я даже не мерял, ну может 2-3 секунды максимум)/


Max Zyuzin   (2002-12-16 09:35:00) [20]

А код посмотреть можно??


Страницы:   1 2

Наверх

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