powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Временные таблицы ,мусор и подводные камни
25 сообщений из 41, страница 1 из 2
Временные таблицы ,мусор и подводные камни
    #40084000
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

возникла задача импорта больших текстовых файлов с последующим разбором их содержимого по другим таблицам. Поскольку при импорте информация берётся из разных частей файлов и т.к. файлы очень большие возникла идея сначала зачитывать их во временные таблицы а потом уже разбирать и импортировать в целевые таблицы (разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб). Поскольку после импорта эти данные не нужны хотелось бы эти временные таблицы потом удалять так что бы не оставлять в базе мусор.
Соотв. начал искать информацию по использованию временных таблиц в FB 2.5.9 и в перспективе в 3й версии.
Нашел что согласно документации при создании временных таблиц (мне по видимому нужно уровня соединения) надо использовать "GLOBAL TEMPORARY" и "COMMIT PRESERVE ROWS".
Далее возник вопрос - после того как таблица автоматически удаляется остаётся ли мусор в базе и до какого момента этот мусор будет существовать? Например будет ли он удаляться только при восстановлении из резервной копии или его можно собрать другим способом.
Хотелось бы ещё услышать что то о подводных камнях которые могут ждать при использовании временных таблиц с большим объёмом данных, на что стоит обратить внимание и где "подстелить соломки".
Где можно подробнее почитать о теме временных таблиц кроме документации (её сейчас активно штудирую на эту тему но информаци в ней не так много).

Спасибо за любые советы и информацию.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084009
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели так сложно открыть документацию?
http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
стр 126

Глобальные временные таблицы (в дальнейшем сокращённо GTT) так же, как и
обычные таблицы, являются постоянными метаданными, но данные в них ограничены по
времени существования транзакцией (значение по умолчанию) или соединением с БД.
Каждая транзакция или соединение имеет свой собственный экземпляр GTT с данными,
изолированный от всех остальных. Экземпляры создаются только при условии обращения к
GTT, и данные в ней удаляются при завершении транзакции или отключении от БД.
Метаданные
GTT могут быть изменены или удалены с помощью инструкций ALTER TABLE и DROP TABLE.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084010
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что за формат файлов такой, что их непременно надо целиком в память грузить
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084011
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений,

Datanorm
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084013
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подводный камень будет такой - временные таблицы будут скидыватся на диск в %FIREBIRD_TMP% , если эта переменная не переопеределена по умолчанию, то в Windows возможна нехватка места на системном диске и последующие проблемы.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084014
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunДалее возник вопрос - после того как таблица автоматически удаляется остаётся ли мусор в базе и до какого момента этот мусор будет существовать?

Таблица никуда не удаляется. Удаляются только данные. Поскольку GTT размещены во временных файлах, то в БД мусора никакого нет. Но версии могут существовать в этих временных файлах. Собственно можно наткнуться даже на сборку мусора в рамках своего же коннекта. Я бы вообще на этот счёт не заморачивался. Кривая работа с GTT никому не может повредить, кроме самого соединения в котором эта работа происходит.

Про резервные копии вообще билеберда какая-то. Содержимое временных таблиц в них никогда не попадёт.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084015
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Где можно подробнее почитать о теме временных таблиц кроме документации (её сейчас активно штудирую на эту тему но информации в ней не так много ).

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

если что в 4.0 для их размещения отдельный параметр сделали в конфиге.


hlopotunСоотв. начал искать информацию по использованию временных таблиц в FB 2.5.9 и в перспективе в 3й версии.

в перспективе надо уже на 4.0 смотреть, в вот какой смысл делать миграцию на предыдущую версию, когда уже есть новая с кучей дополнительных возможностей. Боишься на свежие баги наткнуться, ну так подожди 4.0.1, всё равно мигрировать ты долго будешь, раз до сих пор даже на 3.0 не смог перейти
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084020
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Дегтярев Евгений,
Datanorm

примеров не нашел, эт какой-то местечковый формат? в гугле ссылки только на немецком
написано что это текстовый формат
закажи если не секрет что за зверь
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084022
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
если что в 4.0 для их размещения отдельный параметр сделали в конфиге.

Спасибо за информацию
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084026
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Gallemar,
если что в 4.0 для их размещения отдельный параметр сделали в конфиге.

да погоди, похоже, автор хочет странного
64bit по какой-то причине не использует, на 32bit распарсить почему то не может и движет в направлении проктостоматологии
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084027
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений
Симонов Денис
Gallemar,
если что в 4.0 для их размещения отдельный параметр сделали в конфиге.

да погоди, похоже, автор хочет странного
64bit по какой-то причине не использует

Ну бывает, нет у него возможности собрать ПО х32, это не странность, до сих пор куча софта на Delphi 7
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084034
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений
hlopotun
Дегтярев Евгений,
Datanorm

примеров не нашел, эт какой-то местечковый формат? в гугле ссылки только на немецком
написано что это текстовый формат
закажи если не секрет что за зверь

формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками.
Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла). Предведущая версия софта что это делает (написанная ещё в 2005м) наткнулась на проблемы с памятью при импорте больших файлов в этом году. Начиная примерно от 10 млн строк софт вываливается примерно на 80% зачитывания данных с "Out of memory". Можно конечно вынести импорт в отдельное приложение и скомпилироватрь его как x64, но гарантии что файлы не будут расти дальше нет. Опять же, в приложении задействовано куча модулей используемых в основной 32х битной программе и все их вычленить и тоже перекомпилить под х64 проблематично.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084039
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками.

Выглядит то он как? И если хочется вывести импорт в отдельное приложение, то лучше и БД отдельную сделать. А потом в основную передавать уже обработанные данные.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084041
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла).

А можно такой обмен данными выкинуть и написать нормальный, без обработки млн строк?
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084064
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб

В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084065
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
hlopotun
разбирать их в памяти 32битного приложения просто нехватит памяти в 2 Гб
В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/
не взлетит.
тут программист нужен. ©
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084066
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
hlopotun
Целиком зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно позиционироваться в разные части файла).

А можно такой обмен данными выкинуть и написать нормальный, без обработки млн строк?

не получится, не от нас зависит. Стандарт принят за основу кучей поставщиков и только в нём они присылают данные.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084067
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
и только в нём они присылают данные.

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

В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/


примерно так предведущий коллега и пробовал поступить. Использовал допиленный TbufferedFileStream в сочетании с индексами в памяти в которых и хранилась нужная информация для позиционирования в этом файле в последствии. И как раз этот индекс и вызывал переполнение в последствии. Т.к. Файлов может импортироваться за раз несколько, причём надо между ними прыгать итп. Там достаточно замороченная логика где неудобство формата сталкивается с логикой самого приложания. В эту часть мне ещё надо вникать самому. Сейчас надо определиться с архитектурой пока.
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084071
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
формат заточенный на обмена товарными артиклями, их группами, ценами на них и скидками.

это мне гугльтраслейт с немецкого перевел
ты формат покажи... пример текста, еще ли оно текстовое как пишуть в интернетах
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084072
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunЦеликом зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится
только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно
позиционироваться в разные части файла).

Могли бы Вы привести пример такой "понятности что зачитывать"?
И в чём проблемы с позиционированием в файле?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Временные таблицы ,мусор и подводные камни
    #40084074
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
hlopotun
и только в нём они присылают данные.

и каждый раз по млн строк файлы?

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

В MS Windows есть MMF. Так вот, при формировании "окна" для работы с файлам , указывается 64-битное смещение от начала файла и 32-битный размер. То есть, используя MMF, можно обрабатывать файлы любого размера. ("64 бит должно быть достаточно для каждого" )/


примерно так предведущий коллега и пробовал поступить. Использовал допиленный TbufferedFileStream в сочетании с индексами в памяти в которых и хранилась нужная информация для позиционирования в этом файле в последствии. И как раз этот индекс и вызывал переполнение в последствии. Т.к. Файлов может импортироваться за раз несколько, причём надо между ними прыгать итп. Там достаточно замороченная логика где неудобство формата сталкивается с логикой самого приложания. В эту часть мне ещё надо вникать самому. Сейчас надо определиться с архитектурой пока.


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

hlopotunЦеликом зачитывать надо потому что всё в одном файле и понятно что зачитывать, становится
только когда всё или проиндексировано или торчит в памяти (т.е. надо многократно
позиционироваться в разные части файла).

Могли бы Вы привести пример такой "понятности что зачитывать"?
И в чём проблемы с позиционированием в файле?

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


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