for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

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

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


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive

Re: Ошибка 43 - There is not enough memory to complete this operation
Владимир Максимов

Сообщений: 13958
Откуда: Москва
Дата: 19.05.22 16:22:21
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

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

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


------------------
"Вы поступили правильно, мой друг, но, боюсь, совершили ошибку"..."(с)
Ratings: 0 negative/0 positive



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

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

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