У меня есть приложение, которое получает файлы с плоской таблицей в DBF, которые нормализуют, конвертируют и вставляют в базу данных MySQL, файлы, размер которых увеличивается от 250 000 до 270 000 записей, и теперь они занимают всего 1,5–2 ГБ. процесс и по частям.
Я проверяю в процессе, если нет предыдущих записей, помогите в HashMaps мне ключи, которые являются уникальными записями, чтобы не сохранять всю информацию в них, проблема здесь в том, что при загрузке файлов в базу данных общих записей DBF данные растут, и каждый раз, когда вы что-то импортируете, становится все медленнее и потребляет гораздо больше памяти, вы легко получаете до 770 000 записей в одной таблице и призыв тратить больше из 2 000 000
пример:
Файл DBF имеет 91 поле, и у меня нормализованная база данных дает 5 основных таблиц, и я должен повторить процесс запоминания DBF 5 раз.
Ничто не может занять около 1 часа, перенести все файлы DBF из 250 000 записей.
Как можно минимизировать время и потребление ОЗУ, если потребление ОЗУ не ниже, а я получаю несколько Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Структура файла DBF имеет много избыточных данных, как это (столбцы):
- код опроса
- общие данные обследования
- группировка данных в encuenta
- данные лиц
пример:
| survey_code | survey_columns | group_survey | more_data | person_details |
|:------------|:---------------|:----------------|:----------|:---------------|
| 1 | ... | 1 | ... |1-oscar |
| 1 | ... | 1 | ... |2-juan |
| 1 | ... | 2 | ... |1-catalina |
| 2 | ... | 1 | ... |7-john |
примечание: Как видите, достаточно избыточности данных
структура базы данных MySQL выглядит следующим образом:
Survery (table)
id
survey_data
Group_in_survey (table)
survey_id
group_data
Person (table)
group_id
person_details
Процесс импорта, разделенный в соответствии с таблицами и порядком, определяемым их зависимостью, для каждой таблицы проходит через все записи в файле DBF.
Прежде чем сделать запрос на запуск базы данных, а затем загрузить в HashMap информацию, необходимую для выполнения проверки, если записи существуют до добавления в базу данных в MySQL.
Также каждый раз, когда вы добавляете в базу данных MySQL запись, в которую добавляется запись тамибена в HashMap, поскольку один из процессов отладки дублируется. Последнее делается в каждом из процессов