powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Временные таблицы ,мусор и подводные камни
16 сообщений из 41, страница 2 из 2
Временные таблицы ,мусор и подводные камни
    #40084086
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Короче проще переписать нежели выделить и в х64 перекомпилить.
us-us! ©
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084089
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
hlopotun
формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками.

Выглядит то он как?...

обычный файл с разделителями, каждая срока имеет свой тип, количество полей итп со всякой вложенностью итп немного напоминает IDE но попроще тогоже PRICAT
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084096
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
А подводный камень будет такой - временные таблицы будут скидыватся на диск в %FIREBIRD_TMP% , если эта переменная не переопеределена по умолчанию, то в Windows возможна нехватка места на системном диске и последующие проблемы.

спасибо, тогда примерно понятна логика работы FB со временными таблицами. С FIREBIRD_TMP проблема не большая, софт имеет инсталлятор который может её создать.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084097
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
С FIREBIRD_TMP проблема не большая, софт имеет инсталлятор который может её создать.
Прямо там где нужно сервису?
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084098
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,FIREBIRD_TMP будет на сервере! Не на клиентской стороне.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084100
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunвыше уже написал, что в память не лезет уже сам индекх позволяющий позиционироваться в
этих файлах.

"Не верю!" (с)
Каков размер ключа и в какую структуру этот индекс складывается?

hlopotunобычный файл с разделителями, каждая срока имеет свой тип, количество полей итп со всякой
вложенностью итп немного напоминает IDE но попроще тогоже PRICAT

Так прыгать-то зачем? Импортируй во временные таблицы сразу по мере чтения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084102
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

дык он вроде это и хотел сделать
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084107
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисдык он вроде это и хотел сделать

Вроде, конечно, это, но кто ж его точно знает, вопросы-то у него странные, что здесь, что
в Рустамовском загончике...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084168
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только вот в базе разбирать будет на два порядка медленнее, чем в памяти =)
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084170
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

ошибаешься. Если тупо парсить то да медленнее. Если из GTT раскидывать по другим таблицам, то однозначно быстрее
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084318
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

hlopotunвыше уже написал, что в память не лезет уже сам индекх позволяющий позиционироваться в
этих файлах.

"Не верю!" (с)
Каков размер ключа и в какую структуру этот индекс складывается?

hlopotunобычный файл с разделителями, каждая срока имеет свой тип, количество полей итп со всякой
вложенностью итп немного напоминает IDE но попроще тогоже PRICAT

Так прыгать-то зачем? Импортируй во временные таблицы сразу по мере чтения.


Размер самого ключа не мерял, мерял использование памяти всей программой в процессе импорта этой процедурой:

delphi function _CurrentProcessMemory: Cardinal;
var
MemCounters: TProcessMemoryCounters;
begin
MemCounters.cb := SizeOf(MemCounters);
if GetProcessMemoryInfo(GetCurrentProcess,
@MemCounters,
SizeOf(MemCounters)) then
Result := MemCounters.WorkingSetSize + MemCounters.PagefileUsage
else
RaiseLastOSError;
end;


до момента получения сообщения "Out of memory". Ключ составной, пихается в разные свойства одного из обьектов, которые в свою очередь являются массивами объектов. В итоге это приводит к тому что если грубо то объём используемой памяти на одну запись увеличивается в 2-3 раза в сравнеии с размером самой записи в файле.
В ключ пихается много чего, потом проводится пересорторовка данных итп. Сначала думал где утечки памяти есть, но проверил в процессе импорта этой процедурой через FastMM:

delphi function _CurrentProcessMemory: Cardinal;
var
MemCounters: TProcessMemoryCounters;
begin
MemCounters.cb := SizeOf(MemCounters);
if GetProcessMemoryInfo(GetCurrentProcess,
@MemCounters,
SizeOf(MemCounters)) then
Result := MemCounters.WorkingSetSize + MemCounters.PagefileUsage
else
RaiseLastOSError;
end;


и утечек не обнаружил.
Код большой и сложный, яркий пример того как ненадо делать такой импорт. По сути автор попробовал реализовать свою базу с индексом и частично данными в памяти где всё парсит и потом запихивает всё в базу которая в одних версиях ещё парадоксовая а в других firebird. Собственно отсюда и все проблемы. Но код работает на файлах приемлемого размера (до 600 Мб примерно). По любому прийдётся всё переписывать. От парадокса скорее всего уже отказываться (лишний аргумент клиентам переходить на новую версию).
И да, пихать сразу всё во временные таблицы и от туда уже раскидывать дальше.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084319
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
hlopotun,FIREBIRD_TMP будет на сервере! Не на клиентской стороне.

инсталляция и ведётся на сервере.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084339
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory".


Была такая же ситуация лет 5-7 назад. 32-битная утилита, занимавшаяся обработкой справочников ФИАС в формате DBF после очередного обновления этих справочников "захлебнулась". PE-флаг IMAGE_FILE_LARGE_ADDRESS_AWARE флаг спас и с тех пор всё работает как и прежде без разбора чужого кода или написания нового. Флаг можно поставить любым HEХ-редактором, а если есть исходники, добавить дефайн для линкера. Например, в Delphi это {$SETPEFLAGS $20}. Флаг дает полуторократный прирост адресного пространства, а вам не хватает где-то 20%, так что он должен помочь.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084340
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggreggory
hlopotun
Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory".


Была такая же ситуация лет 5-7 назад. 32-битная утилита, занимавшаяся обработкой справочников ФИАС в формате DBF после очередного обновления этих справочников "захлебнулась". PE-флаг IMAGE_FILE_LARGE_ADDRESS_AWARE флаг спас и с тех пор всё работает как и прежде без разбора чужого кода или написания нового. Флаг можно поставить любым HEХ-редактором, а если есть исходники, добавить дефайн для линкера. Например, в Delphi это {$SETPEFLAGS $20}. Флаг дает полуторократный прирост адресного пространства, а вам не хватает где-то 20%, так что он должен помочь.


спасибо огромное! проверю.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084348
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
Сначала думал где утечки памяти есть, но проверил в процессе импорта этой процедурой через FastMM:

delphi function _CurrentProcessMemory: Cardinal;
var
MemCounters: TProcessMemoryCounters;
begin
MemCounters.cb := SizeOf(MemCounters);
if GetProcessMemoryInfo(GetCurrentProcess,
@MemCounters,
SizeOf(MemCounters)) then
Result := MemCounters.WorkingSetSize + MemCounters.PagefileUsage
else
RaiseLastOSError;
end;


и утечек не обнаружил.
FastMM всего-то позволяет выяснить, вся ли память освободилась при завершении приложения.
Если ты бездумно хапашь память, а освобождается лишь в самом конце - FastMM ничего не скажет.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084349
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
hlopotun
Сначала думал где утечки памяти есть, но проверил в процессе импорта этой процедурой через FastMM:

пропущено...


и утечек не обнаружил.

FastMM всего-то позволяет выяснить, вся ли память освободилась при завершении приложения.
Если ты бездумно хапашь память, а освобождается лишь в самом конце - FastMM ничего не скажет.

указанная выше процедура как раз и посволяла проверять выделение и освобождение в ходе каждой итерации импорта.
Проверка при завершении приложения давно включена но не об ней речь.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Временные таблицы ,мусор и подводные камни
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]