:: Visual Foxpro, Foxpro for DOS
Re: Ошибка 43 - There is not enough memory to complete this operation
sphinx

Сообщений: 31178
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Мы наблюдали как-то такой эффект - программа вылетает с невнятной ошибкой, а под отладчиком всё прекрасно работает. Разница только во временном исполнении команд, значит, если поставить небольшую задержку всё будет работать.
Где поставить? Да хоть после последней команды цикла.
Что даст? Просто исключим ещё одно предположение.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Ошибка 43 - There is not enough memory to complete this operation
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
VeterVFP
Сама процедура может быть длительная (больше дня).

Это плохо само по себе. Такие процедуры надо обязательно разбивать на этапы с сохранением промежуточных результатов на диске. А так отработает 23 часа и вылетит. Снова с начала запускать?

Тут беда в том, что при такой длительной непрерывной работе может влезть какое-то постороннее приложение. Ну, там Windows создание резервной копии запустит или Касперский сканирование на вирусы по расписанию запустит. Мало ли...

VeterVFP
В моих таблица нет таких размеров (макс это 700-800 Мб).

Вопрос не в размере одной таблицы, а в размере объединенной таблицы. Т.е. если в одном запросе в качестве источника данных указаны такие большие таблицы, то и можешь получить переполнение памяти как результат промежуточного объединения данных. Даже несмотря на то, что итоговая выборка будет небольшой. Но ведь где-то в середине процесса будет это самое объединение которое будет больше 2 ГБ

VeterVFP
Значит лучше во все запросы добавить NOFILTER? Тогда оптимизация отключится ведь.

Да. Надо всегда ставить NOFILTER. К вопросу оптимизации это не имеет никакого отношения. Это способ сохранения результата выборки

Понятно, что у полученного курсора не будет индекса, но его вполне можно создать. А вот что будет при объединении с таблицей с наложенным фильтром - непонятно. Результат не предсказуемый. Вполне может быть и переполнение памяти.
Ratings: 0 negative/1 positive
Re: Ошибка 43 - There is not enough memory to complete this operation
sphinx

Сообщений: 31178
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Цитата:
Это плохо само по себе. Такие процедуры надо обязательно разбивать на этапы с сохранением промежуточных результатов на диске. А так отработает 23 часа и вылетит. Снова с начала запускать?

Да, просто как-то пропустил. Однозначно, надо разбивать.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика