Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Коллеги, подскажите, кто знает:
Есть БД на SQLite. размер 3,8 ГБ
хотел программно сделать VACUUM
      ACommand.CommandText.Add('VACUUM;');
      ACommand.Execute;


Получаю out of memory

при этом приложение "отжирало" 2ГБ

далее добавил
{$SETPEFLAGS $0020}


Приложение в памяти стало весить 4 ГБ и всё равно валится на out of memory.
ОЗУ на машине 32ГБ.

Кто знает, есть ли возможность настроить компонент так чтобы он мог переварить такую базу?

Рассматриваю ещё один вариант: поскольку у меня программа по подготовки данных в бд, запускается из командной строки (в рамках bat-файла), меня бы устроило и выполнить в командной строке команду напрямую к базе, без использования delphi

Заранее спасибо.
2 июн 21, 16:20    [22330445]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4664
zhirnov.ilya,

так ки где происходит сие действие: на сервере или на клиенте?

+ https://habr.com/ru/post/172085/

Выполним команду VACUUM:....
При выполнении этой операции содержимое нашей базы было скопировано во временный файл, которым был перезаписан оригинальный файл базы. Технически перезапись оригинального файла происходит, используя метод «Write-Ahead Logging». Подробнее — тут. Это означает, что для выполнении операции VACUUM на жестком диске необходимо иметь свободного пространства — не менее удвоенного объема исходной базы.

2 июн 21, 16:49    [22330465]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
БД и приложение живут на одной машине, на одном диске.

ЗЫ: запас и по дисковому пространству и по ОЗУ есть
2 июн 21, 16:52    [22330472]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

Delphi какой версии?

Posted via ActualForum NNTP Server 1.5

2 июн 21, 16:59    [22330476]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
10.1 Берлин
2 июн 21, 17:03    [22330480]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

02.06.2021 17:03, zhirnov.ilya пишет:
> 10.1 Берлин

Target Platform какой?

Posted via ActualForum NNTP Server 1.5

2 июн 21, 17:06    [22330481]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53472

zhirnov.ilya
Кто знает, есть ли возможность настроить компонент так чтобы он мог переварить такую базу?

ACommand.FetchOptions.Unidirectional := true;

Posted via ActualForum NNTP Server 1.5

2 июн 21, 17:07    [22330482]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Мимопроходящий,

ну это консольное приложение под win 32.

Думаешь если вделать приложение каким-то образом под 64 - взлетит?
2 июн 21, 17:09    [22330483]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Dimitry Sibiryakov,

Это побывал - к сожалению, нет
2 июн 21, 17:10    [22330485]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53472

zhirnov.ilya
Это побывал - к сожалению, нет

Значит включай отладку, лезь в потроха Файердака и смотри куда он тратит память.

Posted via ActualForum NNTP Server 1.5

2 июн 21, 17:14    [22330487]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9969
Версия Delphi ?
2 июн 21, 17:15    [22330489]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Dimitry Sibiryakov,

Спасибо, посмотрю
2 июн 21, 17:17    [22330491]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

02.06.2021 17:14, Dimitry Sibiryakov пишет:
> Значит включай отладку, лезь в потроха Файердака и смотри куда он тратит память.

это скорее всего не файердак пожирает, а сикельлайт при "утрамбовке" базы.

Posted via ActualForum NNTP Server 1.5

2 июн 21, 17:17    [22330492]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Dmitry Arefiev,

10.1 Берлин
2 июн 21, 17:17    [22330493]     Ответить | Цитировать Сообщить модератору
 Re: out of memory на TFDCommand.Execute  [new]
zhirnov.ilya
Member

Откуда:
Сообщений: 13
Всем спасибо.

Решение:
сделал приложение платформу win 64 и всё заработало
2 июн 21, 17:28    [22330501]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить