|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Всем доброго дня, возникла задача импорта больших текстовых файлов с последующим разбором их содержимого по другим таблицам. Поскольку при импорте информация берётся из разных частей файлов и т.к. файлы очень большие возникла идея сначала зачитывать их во временные таблицы а потом уже разбирать и импортировать в целевые таблицы (разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб). Поскольку после импорта эти данные не нужны хотелось бы эти временные таблицы потом удалять так что бы не оставлять в базе мусор. Соотв. начал искать информацию по использованию временных таблиц в FB 2.5.9 и в перспективе в 3й версии. Нашел что согласно документации при создании временных таблиц (мне по видимому нужно уровня соединения) надо использовать "GLOBAL TEMPORARY" и "COMMIT PRESERVE ROWS". Далее возник вопрос - после того как таблица автоматически удаляется остаётся ли мусор в базе и до какого момента этот мусор будет существовать? Например будет ли он удаляться только при восстановлении из резервной копии или его можно собрать другим способом. Хотелось бы ещё услышать что то о подводных камнях которые могут ждать при использовании временных таблиц с большим объёмом данных, на что стоит обратить внимание и где "подстелить соломки". Где можно подробнее почитать о теме временных таблиц кроме документации (её сейчас активно штудирую на эту тему но информаци в ней не так много). Спасибо за любые советы и информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:15 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Неужели так сложно открыть документацию? http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf стр 126 Глобальные временные таблицы (в дальнейшем сокращённо GTT) так же, как и обычные таблицы, являются постоянными метаданными, но данные в них ограничены по времени существования транзакцией (значение по умолчанию) или соединением с БД. Каждая транзакция или соединение имеет свой собственный экземпляр GTT с данными, изолированный от всех остальных. Экземпляры создаются только при условии обращения к GTT, и данные в ней удаляются при завершении транзакции или отключении от БД. Метаданные GTT могут быть изменены или удалены с помощью инструкций ALTER TABLE и DROP TABLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:41 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
что за формат файлов такой, что их непременно надо целиком в память грузить ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:41 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, Datanorm ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:45 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
А подводный камень будет такой - временные таблицы будут скидыватся на диск в %FIREBIRD_TMP% , если эта переменная не переопеределена по умолчанию, то в Windows возможна нехватка места на системном диске и последующие проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:47 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotunДалее возник вопрос - после того как таблица автоматически удаляется остаётся ли мусор в базе и до какого момента этот мусор будет существовать? Таблица никуда не удаляется. Удаляются только данные. Поскольку GTT размещены во временных файлах, то в БД мусора никакого нет. Но версии могут существовать в этих временных файлах. Собственно можно наткнуться даже на сборку мусора в рамках своего же коннекта. Я бы вообще на этот счёт не заморачивался. Кривая работа с GTT никому не может повредить, кроме самого соединения в котором эта работа происходит. Про резервные копии вообще билеберда какая-то. Содержимое временных таблиц в них никогда не попадёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:48 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun Где можно подробнее почитать о теме временных таблиц кроме документации (её сейчас активно штудирую на эту тему но информации в ней не так много ). не верю ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:50 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar, если что в 4.0 для их размещения отдельный параметр сделали в конфиге. hlopotunСоотв. начал искать информацию по использованию временных таблиц в FB 2.5.9 и в перспективе в 3й версии. в перспективе надо уже на 4.0 смотреть, в вот какой смысл делать миграцию на предыдущую версию, когда уже есть новая с кучей дополнительных возможностей. Боишься на свежие баги наткнуться, ну так подожди 4.0.1, всё равно мигрировать ты долго будешь, раз до сих пор даже на 3.0 не смог перейти ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:55 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun Дегтярев Евгений, Datanorm примеров не нашел, эт какой-то местечковый формат? в гугле ссылки только на немецком написано что это текстовый формат закажи если не секрет что за зверь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:57 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Симонов Денис если что в 4.0 для их размещения отдельный параметр сделали в конфиге. Спасибо за информацию ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 10:57 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Симонов Денис Gallemar, если что в 4.0 для их размещения отдельный параметр сделали в конфиге. да погоди, похоже, автор хочет странного 64bit по какой-то причине не использует, на 32bit распарсить почему то не может и движет в направлении проктостоматологии ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 11:00 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Дегтярев Евгений Симонов Денис Gallemar, если что в 4.0 для их размещения отдельный параметр сделали в конфиге. да погоди, похоже, автор хочет странного 64bit по какой-то причине не использует Ну бывает, нет у него возможности собрать ПО х32, это не странность, до сих пор куча софта на Delphi 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 11:02 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Дегтярев Евгений hlopotun Дегтярев Евгений, Datanorm примеров не нашел, эт какой-то местечковый формат? в гугле ссылки только на немецком написано что это текстовый формат закажи если не секрет что за зверь формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками. Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory". Можно конечно вынести импорт в отдельное приложение и скомпилироватрь его как x64, но гарантии что файлы не будут расти дальше нет. Опять же, в приложении задействовано куча модулей используемых в основной 32х битной программе и все их вычленить и тоже перекомпилить под х64 проблематично. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 11:12 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками. Выглядит то он как? И если хочется вывести импорт в отдельное приложение, то лучше и БД отдельную сделать. А потом в основную передавать уже обработанные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 11:22 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). А можно такой обмен данными выкинуть и написать нормальный, без обработки млн строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 11:25 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:23 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
ъъъъъ hlopotun разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб тут программист нужен. © ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:27 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar hlopotun Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). А можно такой обмен данными выкинуть и написать нормальный, без обработки млн строк? не получится, не от нас зависит. Стандарт принят за основу кучей поставщиков и только в нём они присылают данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:28 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun и только в нём они присылают данные. и каждый раз по млн строк файлы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:29 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
ъъъъъ hlopotun разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/ примерно так предведущий коллега и пробовал поступить. Использовал допиленный TbufferedFileStream в сочетании с индексами в памяти в которых и хранилась нужная информация для позиционирования в этом файле в последствии. И как раз этот индекс и вызывал переполнение в последствии. Т.к. Файлов может импортироваться за раз несколько, причём надо между ними прыгать итп. Там достаточно замороченная логика где неудобство формата сталкивается с логикой самого приложания. В эту часть мне ещё надо вникать самому. Сейчас надо определиться с архитектурой пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:34 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками. это мне гугльтраслейт с немецкого перевел ты формат покажи... пример текста, еще ли оно текстовое как пишуть в интернетах ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:35 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotunЦеликом зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). Могли бы Вы привести пример такой "понятности что зачитывать"? И в чём проблемы с позиционированием в файле? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:36 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar hlopotun и только в нём они присылают данные. и каждый раз по млн строк файлы? с десятками миллионов строк. У крупных поставщиков огромное количество артиклей, которые тоже разбиваются на различные варианты одного и того же артикля (сочетание цвет, состав, итп). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:37 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun ъъъъъ пропущено... В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/ примерно так предведущий коллега и пробовал поступить. Использовал допиленный TbufferedFileStream в сочетании с индексами в памяти в которых и хранилась нужная информация для позиционирования в этом файле в последствии. И как раз этот индекс и вызывал переполнение в последствии. Т.к. Файлов может импортироваться за раз несколько, причём надо между ними прыгать итп. Там достаточно замороченная логика где неудобство формата сталкивается с логикой самого приложания. В эту часть мне ещё надо вникать самому. Сейчас надо определиться с архитектурой пока. Ну да, вместо того, чтобы разбираться в логике и править баги, куда приятнее заниматься якобы полезным делом: например, поговорить о том, как долго остается мусор в базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:39 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hlopotunЦеликом зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). Могли бы Вы привести пример такой "понятности что зачитывать"? И в чём проблемы с позиционированием в файле? да, выше уже написал, что в память не лезет уже сам индекх позволяющий позиционироваться в этих файлах. тут накладываеся ещё софт в котором это всё запускается, который тоже хорошо кушает память. Хорошое решение было бы просто выделить импорт в отдельное x64 приложене но это практически невозможно. Слишком много связей с другими х32 модулями а у тех с третьими. Софту уже больше 25 лет, для интерфейса одних только самописных фреймворков внутри использовано более трёх. Короче проще переписать нежели выделить и в х64 перекомпилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:45 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun Короче проще переписать нежели выделить и в х64 перекомпилить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:46 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar hlopotun формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками. Выглядит то он как?... обычный файл с разделителями, каждая срока имеет свой тип, количество полей итп со всякой вложенностью итп немного напоминает IDE но попроще тогоже PRICAT ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:50 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar А подводный камень будет такой - временные таблицы будут скидыватся на диск в %FIREBIRD_TMP% , если эта переменная не переопеределена по умолчанию, то в Windows возможна нехватка места на системном диске и последующие проблемы. спасибо, тогда примерно понятна логика работы FB со временными таблицами. С FIREBIRD_TMP проблема не большая, софт имеет инсталлятор который может её создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:55 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun С FIREBIRD_TMP проблема не большая, софт имеет инсталлятор который может её создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:57 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun,FIREBIRD_TMP будет на сервере! Не на клиентской стороне. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 12:57 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotunвыше уже написал, что в память не лезет уже сам индекх позволяющий позиционироваться в этих файлах. "Не верю!" (с) Каков размер ключа и в какую структуру этот индекс складывается? hlopotunобычный файл с разделителями, каждая срока имеет свой тип, количество полей итп со всякой вложенностью итп немного напоминает IDE но попроще тогоже PRICAT Так прыгать-то зачем? Импортируй во временные таблицы сразу по мере чтения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:01 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, дык он вроде это и хотел сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:02 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Симонов Денисдык он вроде это и хотел сделать Вроде, конечно, это, но кто ж его точно знает, вопросы-то у него странные, что здесь, что в Рустамовском загончике... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 13:10 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Только вот в базе разбирать будет на два порядка медленнее, чем в памяти =) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 15:45 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Siemargl, ошибаешься. Если тупо парсить то да медленнее. Если из GTT раскидывать по другим таблицам, то однозначно быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2021, 15:58 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
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 Мб примерно). По любому прийдётся всё переписывать. От парадокса скорее всего уже отказываться (лишний аргумент клиентам переходить на новую версию). И да, пихать сразу всё во временные таблицы и от туда уже раскидывать дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 10:27 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
Gallemar hlopotun,FIREBIRD_TMP будет на сервере! Не на клиентской стороне. инсталляция и ведётся на сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 10:31 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
hlopotun Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory". Была такая же ситуация лет 5-7 назад. 32-битная утилита, занимавшаяся обработкой справочников ФИАС в формате DBF после очередного обновления этих справочников "захлебнулась". PE-флаг IMAGE_FILE_LARGE_ADDRESS_AWARE флаг спас и с тех пор всё работает как и прежде без разбора чужого кода или написания нового. Флаг можно поставить любым HEХ-редактором, а если есть исходники, добавить дефайн для линкера. Например, в Delphi это {$SETPEFLAGS $20}. Флаг дает полуторократный прирост адресного пространства, а вам не хватает где-то 20%, так что он должен помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 11:53 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
ggreggory hlopotun Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory". Была такая же ситуация лет 5-7 назад. 32-битная утилита, занимавшаяся обработкой справочников ФИАС в формате DBF после очередного обновления этих справочников "захлебнулась". PE-флаг IMAGE_FILE_LARGE_ADDRESS_AWARE флаг спас и с тех пор всё работает как и прежде без разбора чужого кода или написания нового. Флаг можно поставить любым HEХ-редактором, а если есть исходники, добавить дефайн для линкера. Например, в Delphi это {$SETPEFLAGS $20}. Флаг дает полуторократный прирост адресного пространства, а вам не хватает где-то 20%, так что он должен помочь. спасибо огромное! проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 12:02 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
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 ничего не скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 12:28 |
|
Временные таблицы ,мусор и подводные камни
|
|||
---|---|---|---|
#18+
ъъъъъ hlopotun Сначала думал где утечки памяти есть, но проверил в процессе импорта этой процедурой через FastMM: пропущено... и утечек не обнаружил. FastMM всего-то позволяет выяснить, вся ли память освободилась при завершении приложения. Если ты бездумно хапашь память, а освобождается лишь в самом конце - FastMM ничего не скажет. указанная выше процедура как раз и посволяла проверять выделение и освобождение в ходе каждой итерации импорта. Проверка при завершении приложения давно включена но не об ней речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2021, 12:32 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1559985]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 162ms |
0 / 0 |