powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / жпа, батч импорт данных в таблицу.
25 сообщений из 26, страница 1 из 2
жпа, батч импорт данных в таблицу.
    #39460174
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собссно проблема, надо достаточно большой объем через жпа-хибер заимпортить. сущность довольно простая - десяток полей и всё.

ну сделал по простому - каждый раз открывая закрывая сессию - вышло Х времени. долго. сделал так - открыл сессию - сохранил все записи, закрыл сессию - вышло X/2.5 времени. что тоже довольно долго. Почитал про батчи, сделал как написано - ускорилось незначительно. что еще можно сделать? многопоточку? не совсем вариант. начнутся проблемы при импорте связных данных. к тому же пробовал - не особо. одно условие - голый скл и ждбс пользовать нельзя.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460183
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,
конкретнее - время\лог INSERT и размер слова "большой"
Возможно ты упёрся и теперь либо ближе к драйверу (JDBC)? либо тюнинг базы (выкл журналирования)
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460194
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Хибера есть StatelessSession, но в JPA такой фичи, вроде, нет.

автор одно условие - голый скл и ждбс пользовать нельзя.

Ну, JDBC нафиг не нужен. SQL можно и из JPA запускать. А вот почему вы этого не хотите, вопрос открытый. Если это новые записи, то их в кеше всё равно ещё нет. Если вы хотите чтобы они после импорта сразу в кэш попали, то, поланаю, можно это сделать и насильно.

Попробуйте NativeQuery - даёт ли прирост к производительности?
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460218
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно подробнее касательно стейтлесс сессии?
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460219
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ждбс и скл собссно это желание заказчика чтоб скл не было ни в каком виде нигде.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460228
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrПочитал про батчи, сделал как написано - ускорилось незначительнос этого места по подробнее, если можно (:
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460229
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrа можно подробнее касательно стейтлесс сессии?
https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/chapters/batch/Batching.html
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460248
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,
вот ещё
https://stackoverflow.com/questions/14174271/using-statelesssession-for-batch-processing
и приводите конкретику.
Если всё сделали правильно, то вы технологию используете не по назначению (выстрел в ногу заказчика)
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460375
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,

При массовом обмене данными большого объёма с СУБД (загрузка/выгрузка) рекомендую использовать только JDBC. Быстрее чем JDBC в данном случае никакой Hibernate не настроите. Особенно когда время на загрузку/выгрузку ограничено. Иногда для удобства можно разбавить SpringJDBC или Apache DbUtils. Поверьте... я на этом собаку съел.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460391
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickПри массовом обмене данными большого объёма с СУБД (загрузка/выгрузка) рекомендую использовать только JDBC. Быстрее чем JDBC в данном случае никакой Hibernate не настроите. Особенно когда время на загрузку/выгрузку ограничено. Иногда для удобства можно разбавить SpringJDBC или Apache DbUtils. Поверьте... я на этом собаку съел.
Не лучше ли тогда воспользоваться инутраментами самой БД?
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460401
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Лучше, но не всегда возможно. То прямого доступа к серверу нет, то форматы входных/выходных данных какие-то не удобоваримые для штатных тулзов и т.п., разные случаи бывают.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460527
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UsmannatanabrahamjrПочитал про батчи, сделал как написано - ускорилось незначительнос этого места по подробнее, если можно (:
https://vladmihalcea.com/2016/09/27/how-to-customize-the-jdbc-batch-size-for-each-persistence-context-with-hibernate/
один из вариантов. как здесь. другой вариант напрямую батч сайз задавать в апп.конфиге. ватевер короче, в стате вижу батчи, в логах вижу батчи, на производительности это сказывается в районе 10%. я то ожидал что раза в 2 будет быстрее.

Тулза была вообще написано забавно - для записи каждой строчки открывали закрывали сессию - эт опервое, что я убрал - производительность возросла в 2.5 раза. идем дальше - привинтил батчи - производительность возрасла в 2.7 раза. )) это я еще игрался с размерами батча и т.п.

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

При массовом обмене данными большого объёма с СУБД (загрузка/выгрузка) рекомендую использовать только JDBC. Быстрее чем JDBC в данном случае никакой Hibernate не настроите. Особенно когда время на загрузку/выгрузку ограничено. Иногда для удобства можно разбавить SpringJDBC или Apache DbUtils. Поверьте... я на этом собаку съел.
да я то понимаю.. хотя не очень понимаю. как например, это будет эффективнее, если и хибер и голый ждбс генерят одинаковое число запросов и к тому же одинаковые по виду и форме? Сейчас идет речь об импорте одной единственной табилцы (но большой)
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460532
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как минимум было бы хорошо сказать, какая СУБД
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460536
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjr,
ключи в базе FK могут тормозить.
natanabrahamjrда я то понимаю.. хотя не очень понимаю. как например, это будет эффективнее,
запустите вне Java цикл for и будет видно.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460561
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
постгрес.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460596
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460603
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrСейчас идет речь об импорте одной единственной табилцы (но большой)
может "импорте в одну таблицу"?
Что у вас на входе и откуда вход?
Потом проверьте простой цикл вне Java.
Скорее всего без Java будет тоже медленно.
Отсюда проблема не в коде а в архитектуре.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460618
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой еще архитектуре? задача тривиальная как топор. есть файл с данными его надо распарсить и положить в одну единственную таблицу.. я не понимаю просто что там тупо можно улучшить, кроме как используя стандартный (который я надеюсь есть) инструментарий для подобных задач. на сегодня у меня скорость импорта (на моей системе) - порядка 1200-1400 записей в секунду.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460636
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrкакой еще архитектуре? задача тривиальная как топор. есть файл с данными его надо распарсить и положить в одну единственную таблицу.. я не понимаю просто что там тупо можно улучшить, кроме как используя стандартный (который я надеюсь есть) инструментарий для подобных задач. на сегодня у меня скорость импорта (на моей системе) - порядка 1200-1400 записей в секунду.
Об этом и речь, что задача тривиальная как топор, а Вы какой то х#$%^й маетесь, что дескать не жить не быть, нужно хибер. Достаете из своего хибера нативное соединение с БД и фигачите один единственный вызов COPY FROM STDIN, по итогу на выходе объем кода минимальный, производительность максимальная.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460642
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrкакой еще архитектуре? задача тривиальная как топор. есть файл с данными его надо распарсить и положить в одну единственную таблицу.. я не понимаю просто что там тупо можно улучшить, кроме как используя стандартный (который я надеюсь есть) инструментарий для подобных задач. на сегодня у меня скорость импорта (на моей системе) - порядка 1200-1400 записей в секунду.
Суть в том что в данной задаче ORM - лишнее звено. Берем гвоздь, подходим к стенке и забиваем микроскопом. Так и у вас. Берем файл, зачем-то парсим, зачем-то складываем в объекты, зачем-то с помощью ORM сохраняем в единственную таблицу. Даже если файл какого-то экстравагантного формата, то намного проще и эффективнее перегнать его в удобоваримый формат и средствами БД импортировать. Хотя бы в тот же CSV файл. И никакого SQL - заказчик доволен.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460650
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrкакой еще архитектуре? задача тривиальная как топор. есть файл с данными его надо распарсить и положить в одну единственную таблицу.
я с вас фигею.
Вы бы сразу сказали что у вас на входе - ФАЙЛ.
Т.к. ОРМ и Хибер делают ИЗ СУБД Объекты-классы.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460709
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrна производительности это сказывается в районе 10%. я то ожидал что раза в 2 будет быстрее.Можно получить дополнительный прирост оптимизации, если периодически вызывать метод flush() .
(см. Chapter 4. Batch Processing )
имхо
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460813
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123natanabrahamjrкакой еще архитектуре? задача тривиальная как топор. есть файл с данными его надо распарсить и положить в одну единственную таблицу.
я с вас фигею.
Вы бы сразу сказали что у вас на входе - ФАЙЛ.
Т.к. ОРМ и Хибер делают ИЗ СУБД Объекты-классы.
на входе файл, непонятного формата и либа к нему, которая выдирает из него данные. на выходе приложенька, с хибером. посередине постгрес. копаюсь дальше -- оказывается файлов много )) и они между собой взаимосвязаны.
...
Рейтинг: 0 / 0
жпа, батч импорт данных в таблицу.
    #39460817
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmannatanabrahamjrна производительности это сказывается в районе 10%. я то ожидал что раза в 2 будет быстрее.Можно получить дополнительный прирост оптимизации, если периодически вызывать метод flush() .
(см. Chapter 4. Batch Processing )
имхо
пробовал. пока самый быстрый прирост в скорости дает стейтлесс сейшн. внутри одной транзакции.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / жпа, батч импорт данных в таблицу.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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