![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Insufficient memory блин... [D5, Paradox]
Oleg_em © (2003-11-21 08:10:00)
Добрый день !
вот пришлось таки использовать BDE для работы с парадоксовыми таблицами, работаю с TQuery и часто появляется ошибка недостаточности памяти для выполнения операции.
в BDE Admin Config->System->INIT всяка игрался с параметрами
один фик...
+ после запросов появляются файлы _qsq1.db,[2]
BDE 5.01
где еще что подкрутить ?
таблицы то небольшие.. 40 000, 360 000 записей
Oleg_em (2003-11-24 07:42:00) [1]
2ЮЮ
пробовал и так, результат тотже.
что интересно, Query.Close не приводит к освобождению памяти и удалению файлов _qsq.db, мож там нада еще какие шаманства применять...
P.S. я знал что есть проблемы PARADOX-BDE-DELPHI
но штоб ТАКИЕ !!!
ЮЮ (2003-11-22 08:01:00) [2]
запросы типа select a.kod, b.name, c.date from "base\kod" a, "sprav\name" b, "sprav\date" d where [бум бурум}в Paradox-е оформляются так:
select a.kod, b.name, c.date from ":Base:kod" a, ":Sprav:name" b, "":Sprav:date" d where [бум бурум}
где :Sprav, ":Base - алиасы
см. "Heterogeneous joins" в LocalSQL
>в смысле что собирать в один запрос данные из разных таблиц
Это называется из разных баз данных, а таблицы, вообще-то, следует хранить в одной базе данных
служивый (2003-11-21 19:44:00) [3]
Попробуй принудительно указать PrivDir при старте приложения
Anatoly Podgoretsky (2003-11-21 15:55:00) [4]
Все запросы выполняются на клиентской машине, для этого таблицы требуется туда закачать. Если не требуется двухнапрпвленый курсор, то стоит сменить на однонаправленый. Зависит от использования запроса.
Oleg_em (2003-11-21 15:49:00) [5]
когда увеличил до 4096 работать стало горазде медленнее
при 1024 положительного результата (исчезновение Insufficientа)не принесло
есть подозрение, что в случае с парадоксом нельзя применять
запросы типа select a.kod, b.name, c.date from "base\kod" a, "sprav\name" b, "sprav\date" d where [бум бурум}
в смысле что собирать в один запрос данные из разных таблиц...
попробую еще переделать логику работы в этом плане...
Silver Alex (2003-11-21 15:43:00) [6]
> @Silver Alex у меня и было 2048
> изменение размера блока ни к чему хорошему не привело
и что случилось?
Oleg_em (2003-11-21 15:16:00) [7]
фик, все вернулось как было
уже просто не знаю что делать.......
мож BDE 5.01 глючный ?
Oleg_em (2003-11-21 11:06:00) [8]
ого какая дискуссия тут ;-)
@Silver Alex у меня и было 2048
изменение размера блока ни к чему хорошему не привело
> Программу при отладке по Ctrl+F2 закрываешь?
нет, закрывается всё нормальным образом.
повторюсь, установка параметра LOCAL SHARE = TRUE
оказалось правильным решением !
по крайней мере на текущий момент ;-)
Silver Alex (2003-11-21 10:42:00) [9]
> Anatoly Podgoretsky © (21.11.03 10:23) [9]
Возможно я и ошибаюсь, но думаю дело в этом, можно хотя бы попробовать
Anatoly Podgoretsky (2003-11-21 10:23:00) [10]
LOCAL SHARE = FALSE требует очень много памяти.
Silver Alex © (21.11.03 10:06) [8]
А это еще зачем, у него нет ошибки TABLE FULL
Silver Alex (2003-11-21 10:06:00) [11]
запусти BDE, Configuration->Drivers->Native->Paradox->Block Size
поставь побольше, например 2048, может поможет
Рамиль (2003-11-21 09:59:00) [12]
> Программу при отладке по Ctrl+F2 закрываешь?
Да уж, при работе с BDE прогу по Ctrl+F2 лучше не закрывать, а то потом перезагрузкой лечить надо.
Nikolay M. (2003-11-21 09:25:00) [13]
> появляется ошибка недостаточности памяти для выполнения
> операции
Программу при отладке по Ctrl+F2 закрываешь?
ЮЮ (2003-11-21 09:19:00) [14]
>прога не вылетает, т.к. все ExecSQL обрамлены в Try .. Except
А в самом коде ошибок не бывает? ExecSQL программу не завалит, а вот AV - может (или Program Reset из-под IDE)
Oleg_em (2003-11-21 09:05:00) [15]
2RDen прога не вылетает, т.к. все ExecSQL обрамлены в Try .. Except
сейчас поставил в настройке LOCAL SHARE = TRUE
стало гораздо лучче ;-)
похоже это и есть решение проблемы.
P.S. у меня XP, так что я был очень удивлен нехваткой памяти ;-)
Oleg_em (2003-11-21 09:01:00) [16]
Просто БДЕ не тянет,
оптимистичное замечание ;-)
RDen (2003-11-21 08:50:00) [17]
1. У меня было такое пока работал в 98-й винде.
2. После "неаварийного" закрытия запроса временные файлы (типа _qsq1.db) уничтожаются, а у Вас они остаються видимо из-за того, что прога "вылетает".
Виталий Панасенко (2003-11-21 08:49:00) [18]
Смотря, какие запросы ты выполняешь... У меня был ну очень простой - обновить поле одной таблицы, значениями другой... Не хватало FILE HANDLE. Пришлось в MS SQL запихнуть.. Да, у меня были DBF... Но разницы, по моему, нет... Просто БДЕ не тянет