|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Всем привет Есть две сущности ,ака таблицы Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
ее DDL Код: plsql 1. 2. 3. 4.
вторая сущность и ее таблица Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ее ддл Код: plsql 1. 2. 3. 4. 5. 6.
вопрос в чем ,в том что сейчас если я беру обычный джава метод и генерую сначала список объектов класса B, затем генериую спискок объектов класса A и туда делаю set <List<B>> и далее делаю saveAll(List<A>) a получаю две заполненные таблицы)) но прикол в том что FK в таблице B null я знаю почему это получается ,потому что во время комита транзакции у хибера еще нет id класса A ,так как генерация по стратегии секвенс.Если поменять на Idenity все будет норм- но у меня как раз обратная задача. Поэтому ворпос к знатокам можно ли в процесее сохраннения сущности А каскадно сохранить и все сущности класса В с корректным FK ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 20:02 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Код дай. А не рассказом как ты его писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 20:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, И сиквенс то где? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 20:26 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O , я правильно понимаю, что ты смешиваешь IDENTITY & SEQUENCE в одном проекте? Не думаю что это хорошая идея. Когда ты вызываешь save(), то по завершению этого метода Hibernate обязан выдать сущности ID. В случае SEQUENCE все норм - мы просто берем следующую цифру, назначаем ее сущности и возвращаем. При этом никаких запросов в БД не уходит. А в случае IDENTITY порядок другой - ID назначает СУБД, поэтому ORM'у приходится делать сразу же INSERT. Мне кажется эту проблему никак не обойти кроме как сначала сохранять А без B, делать flush(), а затем проставлять коллекцию и снова сохранять. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 20:27 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Если смешивает то дурак ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 20:28 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev O_79_O , я правильно понимаю, что ты смешиваешь IDENTITY & SEQUENCE в одном проекте? Не думаю что это хорошая идея. Когда ты вызываешь save(), то по завершению этого метода Hibernate обязан выдать сущности ID. В случае SEQUENCE все норм - мы просто берем следующую цифру, назначаем ее сущности и возвращаем. При этом никаких запросов в БД не уходит. А в случае IDENTITY порядок другой - ID назначает СУБД, поэтому ORM'у приходится делать сразу же INSERT. Мне кажется эту проблему никак не обойти кроме как сначала сохранять А без B, делать flush(), а затем проставлять коллекцию и снова сохранять. Стасян это тесты - в проекте пока все Identity и моя задача как раз все это снести ,заменив на sequence догадайся почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:10 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
сейчас я смотрел на то как хибер будет сохранять две сущности связанные 1 ко многим,если у базовой секвенс а у списка идентити в итоге получилось что и ожидалось хибер батчем записал все что секвенс и потом построчно все что идентити что далее - я меняю сущности В идентификатор на секвенс ,записываю заново и получаю ровно ту же картину - опять построчная запись,хотя в доках напиисано иное ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:16 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, У тебя удивительная способность задавать глупые детские вопросы. Зачем смешивать селедку с молоком? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, смотри статистику сейчас я поменял все на секвенс и таблица А и таблица Б имеют секвенс генератор в тот же самый момент при апдейте таблицы B Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
я получаю вот такую стату Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
где мы видем что вместо 5 батчей( батч сайз настроен на 500) у нас произошло 2500 запросов и потом 5 батчей и тут возникает вопрос откуда братец 2500 построчных запросов то - ведь уже идентификторы все sequnce ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:32 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O где мы видем что вместо 5 батчей( батч сайз настроен на 500) у нас произошло 2500 запросов и потом 5 батчей Опять что-то пытаешься "оптимизировать"? у тебя статистика вместе и на select и на update, подумай каким образом хибер будет собирать граф, если у тебя: B -> A -> B[] и у всех при этом fetch = FetchType.EAGER? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:55 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
мышь плачет, но продолжает есть кактус... НО! есть прогресс - выкладывает ddl.... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 21:55 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя, Первый вопрос про сиквенс уже решили))) Съехал на вопрос - почему много запросов))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 22:00 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O где мы видем что вместо 5 батчей( батч сайз настроен на 500) у нас произошло 2500 запросов и потом 5 батчей Опять что-то пытаешься "оптимизировать"? у тебя статистика вместе и на select и на update, подумай каким образом хибер будет собирать граф, если у тебя: B -> A -> B[] и у всех при этом fetch = FetchType.EAGER? тоесть при апдейте B хибер лезет в А потом опять в В? выход какой или лейзи инициализация или ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 22:45 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, ОРМ для CRUD, оптимизатор)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:06 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O где мы видем что вместо 5 батчей( батч сайз настроен на 500) у нас произошло 2500 запросов и потом 5 батчей Опять что-то пытаешься "оптимизировать"? у тебя статистика вместе и на select и на update, подумай каким образом хибер будет собирать граф, если у тебя: B -> A -> B[] и у всех при этом fetch = FetchType.EAGER? сделал LAZY сделал апдейт таблицы B статистика ровно таже самая Код: plsql 1. 2. 3. 4. 5.
щас включу логи хибера посмотрю что эта с**а селектит то 100 раз ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:27 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, похоже на то ,что при saveAll() хибер чекает каждый элемент на наличие в базе путем селекта обычного - гениально б ля ,и после этого делает батч апдейт/инсерт тоесть в любом случае ,какой бы не был идентификатор хибер будет делать тоже количество селектов,что и количество элементов в вашем списке - это какой то лютый пиз дец - неужели нельзя было реализовать это как то по другому ,чем делать хренову тонну селектов то ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
при апдейте хибер генерит вот такие запросы Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
следом за ними идет пачка вот таких Код: plsql 1. 2. 3. 4. 5. 6. 7.
запросов типа селект 11 запросов типа update 5 при этом в таблице находится 10 записей) что происходит я честно не очень понимаю ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2021, 23:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O что происходит я честно не очень понимаю Да ладно, хибернейт же лучшее изобретение человечества? или уже нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 02:12 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
забыл ник,интересно к чему тут твой бесполезный коментарий) пс.Вообщем выяснил что при генерации id по стратегии sequence хибер будет каждый раз делать селект в этот самый секвенс при вставке строчки Лечится это инкрементом на 50 хотя бы,тогда время вставки вырастает пропорционально в 50 раз ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O забыл ник,интересно к чему тут твой бесполезный коментарий) пс.Вообщем выяснил что при генерации id по стратегии sequence хибер будет каждый раз делать селект в этот самый секвенс при вставке строчки Лечится это инкрементом на 50 хотя бы,тогда время вставки вырастает пропорционально в 50 раз Потому что все должно идти от таблиц. Хибернейт неплох для простых админок CRUD где не сильно много связей между сущностями. Щаг влево-вправо и начинается возня, типичным примером является твой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:25 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Код дай. А не рассказом как ты его писал. тебе сюда вход воспрещен. не понятно чтоле из названия? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:34 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
забыл ник O_79_O забыл ник,интересно к чему тут твой бесполезный коментарий) пс.Вообщем выяснил что при генерации id по стратегии sequence хибер будет каждый раз делать селект в этот самый секвенс при вставке строчки Лечится это инкрементом на 50 хотя бы,тогда время вставки вырастает пропорционально в 50 раз Потому что все должно идти от таблиц. Хибернейт неплох для простых админок CRUD где не сильно много связей между сущностями. Щаг влево-вправо и начинается возня, типичным примером является твой вопрос. давай по пунктам сейчас мы разбирам не связи между таблицами,а то ,почему хибернейт генерирует те или иные запросы со вставкой я разобрался - хибер делает селекты в секвенс и берет оттуда значение - с этим все норм и лечится это увеличением шага инкремента до дефолтных для хибера 50 сейчас у меня второй вопрос при попытке апдейта некоего количества запиисей в бд происходит не совсем для меня понятный процесс а имеено хибернейт и так уже имея список перстистеных сущностей зачем то опять идет в базу и достает их оттуда построчно и потом так же построчно апдейтит ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
andreykaT, А тебе? Ты же два слова связать не можешь. Обычно троечники возмущаются отличниками) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:44 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, А тебе? Ты же два слова связать не можешь. Обычно троечники возмущаются отличниками) а мне не сказали. читай заголовки в следующий раз внимательнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >имея список перстистеных сущностей зачем то опять идет в базу и достает их оттуда построчно и потом так же построчно апдейтит = А) проверить версию в бд сучности Б) хибер не имеет список при коротких транзакциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp andreykaT, А тебе? Ты же два слова связать не можешь. Обычно троечники возмущаются отличниками) а мне не сказали. читай заголовки в следующий раз внимательнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:49 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
andreykaT, >а мне не сказали Табаки)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 11:52 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, смотри в чем дело вот простейшая сучность Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
вот ее ддлка Код: plsql 1. 2. 3. 4. 5.
что далее при инсерте мы получаем то что и ожидаем вот код на вставку,тут генерируется 100 сучностей Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
сгенерированый список записывается методом save() -стандартный метод JPARepository Код: java 1. 2. 3. 4. 5. 6.
два селекта в sequence и 1 булк инсерт Код: java 1. 2. 3.
тут все хорошо идем далее берем из базы эти сучности ,сеттим им новое имя - складываем в лист и сохраняем тем же методом save() Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
при этом мы получаем вот такую картину Код: java 1. 2. 3.
где видно что хибер сделал 100 запросов в бд ,я посмотрел что это за запросы это обычный селект сучности A из таблицы А вопрос зачем хибер это делает и как этого избежать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:00 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, а если между findAll() и saveAll(list), кто то чета изменил? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:07 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:10 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Убери for и разберись пока без него ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:12 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, авторкак этого избежать убрать прокладку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:13 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
am_sasa O_79_O, а если между findAll() и saveAll(list), кто то чета изменил? ну так я и изменил - все верно почему делаются селекты в бд ,если и так есть перситенс сущности или ты намекаешь на то,что хибер делает dirty check чтоли вот этими селектами ,сравнивая текущее состояние сучности с состоянием в бд? если это так то как тогда делать булк апдейты? писать nativeQuery типо update .... set .... where .....? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:17 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, хибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховывается ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:27 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, авторкак этого избежать опять ты за свое ,хотел бы я посмотреть на тебя,как ты выпилишь хибер из уже существующего проекта ,кто это согласует и самое главное кто оплатит? ты бизнесу что скажешь? извините мы пару лет назад ошиблись при выборе стека технологий,дайте нам еще годик на перевод системы на новое ядро?))) Вадя обычно при приеме на работу разработчки среднего звена работают с тем,что есть ,мы лишь можем порекомендовать лиду что то. Ну он скажет да - было бы здорово и на этом все закончится) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:29 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, хибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховывается ну теперь все понятно стало,тоесть фактически булк апдейт можно сделать лишь непосредственно прямым запросом,не вытаскивая сущности из базы. Хорошо хотя бы то,что новые сучности инсертятся булком,ну а апдейт - конечно печалька. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:32 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >если это так то как тогда делать булк апдейты? = не дошло? Crud это не булки, пакеты, импорты, и экспорты. Все уже на форуме это знают ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:39 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O или ты намекаешь на то,что хибер делает dirty check чтоли вот этими селектами ,сравнивая ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 12:44 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, авторкак этого избежать ну вот смотри - у меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранил причем я не знаю в какие колонки и в каких записях были поменны,как ты это сделаешь без просйлоки? начнешь писать тонны бойлер кода а хибер дает тебе вомзможность сделать это в одну строчку saveAll(List list) при этом он выполнит теже операции что и ты ,а может и меньше за счет кеширования ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:28 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O вадя O_79_O, пропущено... убрать прокладку. ну вот смотри - у меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранил причем я не знаю в какие колонки и в каких записях были поменны,как ты это сделаешь без просйлоки? начнешь писать тонны бойлер кода а хибер дает тебе вомзможность сделать это в одну строчку saveAll(List list) при этом он выполнит теже операции что и ты ,а может и меньше за счет кеширования ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:30 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадяхибер для двухзвенной архитектуры , и он подразумевает, что есть и другие хиберы (у других юзеров) которые могли изменить. вот он и перестраховываетсяПерестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm* O_79_Oну теперь все понятно стало,тоесть фактически булк апдейт можно сделать лишь непосредственно прямым запросом,не вытаскивая сущности из базы.Я не уверен что ты правильно используешь термин bulk update. Bulk/batch обновления это про hibernate.order_updates , hibernate.order_inserts . Никаких select'ов при insert'e новых данных быть не должно. И смотреть для дебага нужно не статистику, а show_sql и use_sql_comments, и желательно логирование на уровне драйвера ( см. тут ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Pвопрос зачем хибер это делает и как этого избежать у тебя find и saveAll выполняются в разных транзакциях, т.е. в saveAll ты передаешь сущности, которые персистенс-контексту не известны (он их не загружал), а разработчики spring-data-jpa влепили в save вызывов em.merge() отсюда у тебя лишние селекты. вообще у тебя должно выглядеть все так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, автору меня есть некие запииси в таблице,я их оттуда достал - модифицировал и обратно сохранилтут проблема в том, что ты работаешь с записями, которые извлек. и они у тебя в коде. с записями, а не с одной записью. и даже когда у тебя один сервер с хибером - свой набор сучностей у каждого коннекта, по сути двухзвенка. тут надо логику менять, не держать в памяти кучу данных в листах. клиент изменил поле надо отправить на сервер и проанализировать кто ещё оперирует с этой записью, чтоб исключить спорную ситуацию с изменением ем данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, авторкоторые могли изменить. вот он и перестраховывается Перестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm*ты читай правильно - в двухзвенной системе хибер есть у каждого клиента. они ничего не знают о состоянии друг друга ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 13:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя Stanislav Bashkyrtsev, авторкоторые могли изменить. вот он и перестраховывается Перестраховывается? Другие хиберы? Вадя как обычно комментирует в темах в которых нисколько не разбирается *facepalm* ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 14:34 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
lleming, авторну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. ну это уже тонкости, которые тут роли не играют. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:02 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O Pвопрос зачем хибер это делает и как этого избежать у тебя find и saveAll выполняются в разных транзакциях, т.е. в saveAll ты передаешь сущности, которые персистенс-контексту не известны (он их не загружал), а разработчики spring-data-jpa влепили в save вызывов em.merge() отсюда у тебя лишние селекты. вообще у тебя должно выглядеть все так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
как обычно чотко и по делу,спасиб за совет самое смешное я прекрасно помню что хибер отслеживает состоянии персистеной сущности и любое изменение акутализирует,но анотацию ума поставить не хватило) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:04 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
lleming вадя Stanislav Bashkyrtsev, пропущено... ты читай правильно - в двухзвенной системе хибер есть у каждого клиента. они ничего не знают о состоянии друг друга ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. так причем тут контроллер вообще?Ты же видешь что работа идет в рамках одного запроса - тоесть по сути не важно контроллер это или обычный тест бы дергал метод этот. А вот то что findAll и saveAll выполняются в двуз разнызх транзакциях - я забыл,хотя читал про то что у хибера без анотации @Transactional любой такой запрос это одна транзакция ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O lleming пропущено... ну не укаждого хибер есть все таки, а только что сессии разные. ибо сессия к потоку привязана. @PostMapping а это видимо коттроллеры и если все стандартно спринг бут томкат то каждый запрос отдельный поток и отдельная сессия. Хиренейт не видит в новой сесии объекты и освежает их запросом к бд. так причем тут контроллер вообще?Ты же видешь что работа идет в рамках одного запроса - тоесть по сути не важно контроллер это или обычный тест бы дергал метод этот. А вот в тесте никто бы сессию не открыл без @Transactional. Разве что это RestAssured и/или MockMvc тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Ты убедись тестами что в одном методе идут две разных сессии хибера. Для хибера имеет значение сессия его в твоем вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Вообще важно. Если бы у тебя был Spring Boot, то по умолчанию он сконфигурил бы OpenEntityManagerInViewInterceptor и тогда сессия (EntityManager) создалась бы до контроллера. В таком случае проблемы с лишними select'ами не было бы потому как объекты бы были в сессии уже. Это все равно было бы неправильно (тут явно нужна одна транзакция), но select'ов бы не было. В обычном Spring MVC надо OSIV настраивать самому, причем можно фильтром а не интерсептором (и это лучше чем неявная конфигурация SpringBoot'ом). А вот в тесте никто бы сессию не открыл без @Transactional. Разве что это RestAssured и/или MockMvc тесты. ты ошибаешься,потому что у меня как раз таки спринг бут не путай сессию хибера и http сессию они не взаимосвязаны ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:49 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Ты убедись тестами что в одном методе идут две разных сессии хибера. Для хибера имеет значение сессия его в твоем вопросе. не нужно убеждаться это в учебнике написано что хибер каждый запрос выполняет в рамках отдельной тразакции( читай хибер сессии) чтобы хибер выполнил несколько запросов в рамках одной транзакции нужно хиберу об этом соообщить анотацией @Transactional ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:53 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Stanislav Bashkyrtsev Вообще важно. Если бы у тебя был Spring Boot, то по умолчанию он сконфигурил бы OpenEntityManagerInViewInterceptor и тогда сессия (EntityManager) создалась бы до контроллера. В таком случае проблемы с лишними select'ами не было бы потому как объекты бы были в сессии уже. Это все равно было бы неправильно (тут явно нужна одна транзакция), но select'ов бы не было. В обычном Spring MVC надо OSIV настраивать самому, причем можно фильтром а не интерсептором (и это лучше чем неявная конфигурация SpringBoot'ом). А вот в тесте никто бы сессию не открыл без @Transactional. Разве что это RestAssured и/или MockMvc тесты. ты ошибаешься,потому что у меня как раз таки спринг бут не путай сессию хибера и http сессию они не взаимосвязаны ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:54 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp O_79_O, Ты убедись тестами что в одном методе идут две разных сессии хибера. Для хибера имеет значение сессия его в твоем вопросе. не нужно убеждаться это в учебнике написано что хибер каждый запрос выполняет в рамках отдельной тразакции( читай хибер сессии) чтобы хибер выполнил несколько запросов в рамках одной транзакции нужно хиберу об этом соообщить анотацией @Transactional ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:57 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev O_79_O пропущено... ты ошибаешься,потому что у меня как раз таки спринг бут не путай сессию хибера и http сессию они не взаимосвязаны потому что он для школьников и тех кто не умеет в хибер ,это сказал один из тим лидов еще давно- у нас зимой тут как раз и были споры на эту тему он у нас отрублен это да ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:57 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O пропущено... не нужно убеждаться это в учебнике написано что хибер каждый запрос выполняет в рамках отдельной тразакции( читай хибер сессии) чтобы хибер выполнил несколько запросов в рамках одной транзакции нужно хиберу об этом соообщить анотацией @Transactional как ты видешь из кода все в рамках одного метода и происходит собственно смысл дальще об этом говорить если Олег указал что и где и почему не так. Давайте я подкину новую историю из этой же темы,она также довольно интересна ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:59 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Еще раз. Поставь рядом findAll и сохранить. И убедись что они в разных сессиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 15:59 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Не надо новых. Покажи что аннотация уменьшила запросы. Добивай вопрос до конца. Не скользи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:01 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Не надо новых. Покажи что аннотация уменьшила запросы. Добивай вопрос до конца. Не скользи. я же выше сказал что анотация уменьшила - точней полностью убрала все лишние селекты ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:07 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, ОК Отлично ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 16:11 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, ОК Отлично но есть еще один кейс, я изменил сучность A Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
добавил вторую сучность B Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
далее я генерирую сучности A и добвляю к ним в колекцию сучности В Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
далее я записываю все это в базу данных Код: java 1. 2. 3. 4. 5. 6. 7.
что я ожидаю что появится 50 записей в таблице A и по 2500 записей в таблице B ,при этом в каждой из записей в колонке a_id будет так же заполнена но этого не происходит- обе таблицы заполняются записям но колонка a_id в таблице B всегда null я понимаю что это происходит потому что на этапе комита у хибера еше нет id сучности А,так как стратегия генерации ПК у нас секвенс.Это можно исправить поменяв стратегию на Identity - тогда FK будут корректно записываться в таблицу В но у меня как раз в том и состоит задача - чтобы убрать Identity вопрос к знатокам - если способ какой исправить ситуацию и каскадно записывать эти две сучности ддл таблиц Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Для каждой сучности свой сиквенс + он в аннотации + все одинаковый режим. Выполняется? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:45 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, 2) убрать цикл и сделать без него ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, 3)нафиг базу ломать своим increment 50. Убери. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:49 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, 3)нафиг базу ломать своим increment 50. Убери. чтобы не бегать в бд за каждый ID а так если подсказть хиберу что sequence генерятся интервалом 50 он дернет раз получит 100, а дальше сам внутри приращением 49 новых записей сможет сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 17:55 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, 3)нафиг базу ломать своим increment 50. Убери. если убрть инкремент будем делать кучу селектов ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:05 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
lleming, Он сиквенс для приложений предприятия нарисовал. Я бы не. Он что, пуп земли со своим хибером? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:05 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp O_79_O, 3)нафиг базу ломать своим increment 50. Убери. если убрть инкремент будем делать кучу селектов ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:05 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, И сиквенс afaik не пишется внутри ddl table ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:07 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp другие решения ищи. Убери цикл! чем тебе цикл не нравится - там лишь генерятся сущности,он тут вообще никаким боком ни кому не мешает генерится сущность А - в нее добавляется список с сущностями В при записи в бд сущности B не получают запись в поле a_id которое является ссылкой на пк из таблицы А ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:28 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Немного изменил сущности Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
теперь получаю ошибку по понятной причиние ,так как a_id теперь валидируется как NotNull ,а значение ей так и не прописывается при каскадном сохранении ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:36 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp другие решения ищи. Убери цикл! чем тебе цикл не нравится - там лишь генерятся сущности,он тут вообще никаким боком ни кому не мешает генерится сущность А - в нее добавляется список с сущностями В при записи в бд сущности B не получают запись в поле a_id которое является ссылкой на пк из таблицы А Декомпозиция. Учись. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:38 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Мы дождемся отношений двух классов. Как пример?))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:45 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Мы дождемся отношений двух классов. Как пример?))))) выше все есть и ддл и сущности Петро ,ну не хватает знаний - хоть гугли вместе со мной вот решение этой проблемы,ddl не меняется - меняем сущности Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
теперь все пишется корректно и батчится Код: java 1. 2. 3.
не знаю только насколько это хорошо 3 к записей - были записаны за 18 секунд ,нужно понять почему так долго запись идет,если таки булк инсерты ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:52 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Мне все хватает. У меня красный диплом) А вот ты путаешь отношеня классов в каскаде и с FK ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 18:55 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >вот решение этой проблемы,ddl не меняется - меняем сущности = то есть как я говорил - циклы не причем к первой ошибке. Не верный маппинг)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 19:02 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >не знаю только насколько это хорошо = будешь ленится делать тесты что просят мемберы - никогда не узнаешь. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 19:04 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, стой) а где коммент по 18 сек на инсерт? насколько это адекватное время вставки) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 20:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
самое смешное во всей этой истории,что замена идентификатора с identity на sequence не дает ни какого прироста производительности и даже наоборот время вставки увеличивается где то секунд на 30 это на вставке 50 к элементов стата вот такая идентити id Код: plsql 1. 2. 3. 4.
sequence id Код: plsql 1. 2. 3. 4.
я не пойму как такое возможно ведь если исходить из статистики тут как миниум во втором варианте вставка должна была пройти быстрей раз в 50 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 21:47 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp, стой) а где коммент по 18 сек на инсерт? насколько это адекватное время вставки) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:03 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O PetroNotC Sharp, стой) а где коммент по 18 сек на инсерт? насколько это адекватное время вставки) выше пример с секвенсом там нет ни одного лишего запроса там всего 2552702500 nanoseconds spent executing 1010 JDBC statements; а это как раз запрос в секвенс на пачку новых айдишников - так как сущноестей у нас 50 000 то и запросов было 1000 все остальное это 200 батчей ,правда странно почему батчей 200 ,если записей было сделено 50 000 к и размер батча у меня выставлен на 500 - батчей должно быть 101 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:15 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Уменьшить время в 100 и тысячу раз можно - убрать ОРМ - на ОРМ но sql запросы - выкл FK и ключи, журналирование,... на время вставки - пакетный режим - кинуть файл на хост с бд -... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:18 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >выше пример с секвенсом там нет ни одного лишего запроса = повтори на 50тыр вставкой без хибера. Если то же время то ты достиг потолка. Далее резервы то что я описал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:23 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Уменьшить время в 100 и тысячу раз можно - убрать ОРМ - на ОРМ но sql запросы - выкл FK и ключи, журналирование,... на время вставки - пакетный режим - кинуть файл на хост с бд -... это все понятно ,я хочу разобоаться имеет ли смысл менять во всем проекте идентификаторы с идентити на sequnce - пока я вижу что время вставки стало хуже.А ведь именно изза этого и возникла такая задача. Поэтому у меня и остался вопрос - либо я что то не так делаю в рамках поставленной задачи- может есть какие то финты -но сейчас я вижу что смена типа идентификатора не дала ни какого прироста прозводительности ,хотя ведь все было с батчами- как такое возможно я не знаю- очень странная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:23 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, А кто говорил что на сиквенсах будет быстрее? Ты это не обсуждал. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:26 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
У постгри поле счетчик это тот же сиквенс только скрытый системный)) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 22:27 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O это все понятно ,я хочу разобоаться имеет ли смысл менять во всем проекте идентификаторы с идентити на sequnce - пока я вижу что время вставки стало хуже.А ведь именно изза этого и возникла такая задача. Априори очевидно, что при использовании последовательностей вам придётся сделать, как минимум, один запрос для получения списка последовательных значений, разобрать его и вставить каждое полученное значение в формируемый вами запрос. Вариантов распараллеливания без синхронизации как-то не очень просматривается, поэтому больше работы - больше затраты времени. Автоинкрементное поле, с другой стороны, выносит все ваши потуги на сторону СУБД. В этой ситуации полезно принимать две презумпции: 1. Другие люди не глупее вас; 2. В силу специализации они сталкивались с гораздо бОльшим количеством разных случаев и у них есть гораздо лучшие возможности для оптимизации разных частных вариантов. Вашего - в том числе. Например, проблему получения значений автоинкрементных полей при вставках - решает клауза RETURNING, если её поддерживает ваша СУБД и ваш инструментарий. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 23:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, А кто говорил что на сиквенсах будет быстрее? Ты это не обсуждал. блин ну логично же предположить,что булк инсерты в количестве 1000 выполнятся быстрей чем 50 000 инсертов но сдается мне хибер не умеет делать булк инсерты в прямом смысле этого слова похоже он просто берет пачку и в рамках одной транзакции ее шлет построчно и потом следом другую- тоесть фактичеки это будет теже самые 50000 инсертов ,да еще и разбитые на куски - поэтому и времени уходит больше в логах вот такой спам идет Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
как видно не пахнет никаким булк инсертом ,обычные инсерты вместо чего то такого Код: plsql 1.
очень и очень странно ,ведь в настройках все включено для этого и собственно подтверждается статистикой ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2021, 23:58 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Basil A. Sidorov O_79_O это все понятно ,я хочу разобоаться имеет ли смысл менять во всем проекте идентификаторы с идентити на sequnce - пока я вижу что время вставки стало хуже.А ведь именно изза этого и возникла такая задача. Априори очевидно, что при использовании последовательностей вам придётся сделать, как минимум, один запрос для получения списка последовательных значений, разобрать его и вставить каждое полученное значение в формируемый вами запрос. Вариантов распараллеливания без синхронизации как-то не очень просматривается, поэтому больше работы - больше затраты времени. Автоинкрементное поле, с другой стороны, выносит все ваши потуги на сторону СУБД. В этой ситуации полезно принимать две презумпции: 1. Другие люди не глупее вас; 2. В силу специализации они сталкивались с гораздо бОльшим количеством разных случаев и у них есть гораздо лучшие возможности для оптимизации разных частных вариантов. Вашего - в том числе. Например, проблему получения значений автоинкрементных полей при вставках - решает клауза RETURNING, если её поддерживает ваша СУБД и ваш инструментарий. тут проблема не в получении id ,а в том,что не исполняется булк инсерт ,вместо него хибер генерирует инсерты по количеству элементов в списке ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 00:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O тут проблема не в получении id ,а в том,что не исполняется булк инсерт ,вместо него хибер генерирует инсерты по количеству элементов в списке Многострочные вставки (bulk insert в вашей терминологии) вещь, конечно, хорошая, но тут надо бы понимать некоторые вещи: 1. Многострочная вставка хороша тогда, когда у вас есть не очень много данных и суммарный размер запроса не превысит предельного размера запроса. В этом случае можно не возиться с параметризованными запросами, но получить выигрыш за счёт разовой подготовки запроса и нескольких вставок из литералов этого запроса. 2. Если же вам требуется много вставок, то параметризация запроса с разовой подготовкой (PrepareStatemnt или около того) с последующими вставками "по одной" может оказаться быстрее, чем меньшая по размеру пачка "литерных" многострочных вставок. 3. Можно, конечно, параметризовать и многострочную вставку, но это определённый геморрой, который, как минимум, потребует обработки последней вставки или/и возни генерацией разных многострочных запросов под разное количество вставок в каждом варианте. P.S. У Кайта есть вполне себе показательный пример как время подготовки запроса может в разы превышать время его исполнения. То, что Кайт пишет про вполне конкретную СУБД - ситуацию никак не меняет. Запрос исполняется не магией, а вполне конкретными этапами: формирование, передача, подготовка и собственно исполнение. Глупо, согласитесь, "оптимизировать" время исполнения, если остальные этапы занимают значимую долю общего времени. Такой же глупостью выглядят и ваши наносекунды - типичное "время неопределённости" из-за планирования потоков исполнения и ввода/вывода как вашего приложения так и СУБД будет в пределах долей миллисекунды. А просто читая длинные числа - легко "прокинуться" на порядок, а то и на два. P.P.S. И - да: неряшливость в оформлении результатов это плохо. Иногда - очень плохо. Совсем плохо, если это публичные результаты - не работает эгоистичное "а мне так норм". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 01:07 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
и все же не понятно зачем вставлять такое количество? неужели нельзя ро одной записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 04:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, insert into b (id,a_id,name) values (1,2,'sss'),(2,2,'2312'); А ты в жизни то булк видел? ))))))))) Ну вот правда. Зачем это спринг, бут, хибер, если чел ни разу не видел пакетные записи))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 06:41 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, insert into b (id,a_id,name) values (1,2,'sss'),(2,2,'2312'); А ты в жизни то булк видел? ))))))))) Ну вот правда. Зачем это спринг, бут, хибер, если чел ни разу не видел пакетные записи))) а ты сам то видел?)то что выше и есть булк инсерт лол ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 09:36 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя и все же не понятно зачем вставлять такое количество? неужели нельзя ро одной записи? выгрузка в базу из файлов- очень часто используемая функция например ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 09:39 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O в логах вот такой спам идет а если ты по ссылкам пойдешь, то найдешь еще что нужно PostgreSQL крутить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 09:46 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Выспался? Сделай пакет на jdbc и расскажи как работает. Или 20 страниц болтать будем? Я вижу что ты не знаешь что такое батч. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 09:50 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O в логах вот такой спам идет а если ты по ссылкам пойдешь, то найдешь еще что нужно PostgreSQL крутить я посмотрел логи бд ,а не логи хибера там идет построчный инсерт Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
но дата прокси сейчас подключу,но тут и по времени выполнения понятно,что нет ни какого булк инсерта ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:04 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Выспался? Сделай пакет на jdbc и расскажи как работает. Или 20 страниц болтать будем? Я вижу что ты не знаешь что такое батч. дядь иди в тему постгрес - ты опять начинаешь в силу своих скудных знаний засирать тему вот как логируется булк Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:11 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Правильно. Чтобы тебе красиво уйти с лужи, срочно займись флудом: - "я знаю булк, это ты не знаешь" - "не буду делать тесты так как и так все видно" - "засираешь тему, изыди )))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:22 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, авторвыгрузка в базу из файлов- очень часто используемая функция напримертак это решается проще и быстре другими методами, а не через ж.... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:31 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя O_79_O, авторвыгрузка в базу из файлов- очень часто используемая функция например еще раз задание заменить Идентификаторы Identity на Sequence если бы я был петрой- я бы просто взял это и сделал без задних мыслей,но я не петрушка,которая не видела булк инсерт в глаза и теперь пытается выйти красиво из патовой ситуации- но не получится) Собственно я для себя решил выяснить получим ли какие либо профиты от смены идентификатора,в числе прочих были озвучены не возможность хибера делать булк инсерты с Idenity id и я решил это проверить от А до Я.Тоесть передо мной вадя не стоит задача сделать выгрузку файла или еще что то ,я хочу понять нужно ли вообще эту таску выполнять- так как я вижу что мы ничего не выграем в итоге -так как время выполенния вставки 50 к элементов 7 минут и в обоих случаях ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:41 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >так как время выполенния вставки 50 к элементов 7 минут и в обоих случаях = а с нативным sql? )))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:56 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Тебе придется выполнить с нативным sql как ты не упирайся и не лови петю))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 10:57 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Тебе придется выполнить с нативным sql как ты не упирайся и не лови петю))))) как минимум что б знать к каким цифрам стремиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 11:11 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя, Да. И как делается батчинг. Он и в jdbc начнет аннотацию ставить))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 11:21 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, >так как время выполенния вставки 50 к элементов 7 минут и в обоих случаях = а с нативным sql? )))))) с нативным 12 секунд ,хватит клоунады ,реально засираешь все топики своим бесполезным офтопом ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, код? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:10 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp O_79_O, >так как время выполенния вставки 50 к элементов 7 минут и в обоих случаях = а с нативным sql? )))))) с нативным 12 секунд ,хватит клоунады ,реально засираешь все топики своим бесполезным офтопом DDL в задаче писать я тебя научил. А профессионально не растешь - маппинг искал 4 страницы - сиквенсы прописывать не умеешь - названия топиков 16летнего юнца. "только факты и ничего личного". Внимание вопрос! 12 сек в пакетном или без? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:15 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O пропущено... с нативным 12 секунд ,хватит клоунады ,реально засираешь все топики своим бесполезным офтопом DDL в задаче писать я тебя научил. А профессионально не растешь - маппинг искал 4 страницы - сиквенсы прописывать не умеешь - названия топиков 16летнего юнца. "только факты и ничего личного". Внимание вопрос! 12 сек в пакетном или без? ))) внимание читайте название темы и покиньте ее ,ноль пользы - тонны офтопа ,отвечать обоим больше не буду ,все топики превращаете в помойку. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:25 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, будем наблюдать поглощение кактуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Ваше мнение вечного джуна очень важно для нас. Работайте! Когда напишите глупость, мы придем. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:34 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
вадя, Ему циклы то еще рано. Он 4 страницы два класса никак не мог связать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:36 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_79_O в логах вот такой спам идет а если ты по ссылкам пойдешь, то найдешь еще что нужно PostgreSQL крутить не смог прикрутить эту штуку себе ,прописал этот бин ,что дальше вообще непонятно - как хибер должен понимать что ему надо этот бин дернуть - одному богу известно- вообщем да - все пишут что хибер логирует батчи не правильно.... но факт то остается фактом - время выполнения вставки одного и того же количества элементов в базу батчем (якобы) и посроковым инсертом ==одинаков так как мы точно знаем что хибер не батчит Identity ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Что Вы понимаете под словом "батч" в контексте Hibernate и PostgreSQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 12:52 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Что Вы понимаете под словом "батч" в контексте Hibernate и PostgreSQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:00 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Что Вы понимаете под словом "батч" в контексте Hibernate и PostgreSQL ? Вот это самое из учебника Код: plsql 1. 2.
а получаем вот это пока Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:05 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >из учебника = на jdbc делать не умеем. Ясно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:09 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Вот это самое из учебника Код: plsql 1. 2.
Из какого учебника? Для какой базы это пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:11 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Вообщем максимально упростил сучности убрал все связи вот такие сейчас Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
вторая соответсвнно с секвесном Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
делаю вставку по 10 000 каждой аналитика по сучности А Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
время вставки 33 секунды как мы видим- батчей 0- так как сучность с идентификатором идентити далее делаем вствку сучностей B Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
видим как и положено 201 запрос в секвенс для получения id и 20 батчей по 500 элементов в каждом время ухудушилось на 1 секунду статистика не будет врать я думаю - значит инсерты все таки исполняются батчами почему тогда нет разницы по времени построчно или батчем ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:14 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Плюс цитата про "батч" из документации PostgreSQL (и ссылка разумеется, из какого места эта цитата) Я вот тоже, например, хочу создать топик "Объясните, как заставить Hibernate и PostgreSQL готовить по утрам яичницу с беконом пока я сплю, а то на работу приходится голодным уходить" - но ведь не создаю. Может, конечно, стоило бы. Возможно это я просто туплю ((( и не умею Hibernate для выполнения домашней работы использовать. А так хорошо бы было, если бы Hibernate и еду готовил, и пол мыл, и в стиральную машинку грязные носки.... Эх, не жизнь бы была, а красота. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:16 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev O_79_O Вот это самое из учебника Код: plsql 1. 2.
Из какого учебника? Для какой базы это пример? причем тут база? ваш вопрос звучал как что такое батч в рамках Хибера - я вам ответил,учебник - по хиберу влада махайлича или как там его ,глав спец по хиберу всея планеты ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:16 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Плюс цитата про "батч" из документации PostgreSQL (и ссылка разумеется, из какого места эта цитата) Я вот тоже, например, хочу создать топик "Объясните, как заставить Hibernate и PostgreSQL готовить по утрам яичницу с беконом пока я сплю, а то на работу приходится голодным уходить" - но ведь не создаю. Может, конечно, стоило бы. Возможно это я просто туплю ((( и не умею Hibernate для выполнения домашней работы использовать. А так хорошо бы было, если бы Hibernate и еду готовил, и пол мыл, и в стиральную машинку грязные носки.... Эх, не жизнь бы была, а красота. IMHO тоесть вы отверагаете саму мысль что хибер умеет делать булк инсерты?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O тоесть вы отверагаете саму мысль что хибер умеет делать булк инсерты?)) Что Вы понимаете под словами "булк инсерт" в контекте PostgreSQL ? Ссылку на документацию, please ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:23 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O причем тут база? 1. Leonid Kudryavtsev Что Вы понимаете под словом "батч" в контексте Hibernate и PostgreSQL ? 2. Leonid Kudryavtsev Плюс цитата про "батч" из документации PostgreSQL (и ссылка разумеется, из какого места эта цитата) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:24 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
p.s. Я конечно немного не прав. В PostgreSQL есть "многострочный" INSERT Я бы и ожидал его увидеть при JDBC'ном "батче". Что под "батчем" понимает JDBC PostgreSQL драйвер - не знаю, не смотрел, не проверял. p.p.s. Ожидать от Hibernate максимально возможной производительности (комада PostgreSQL COPY) разумеется не стоит. Через COPY можно сделать на пару порядков (десятки, сотни раз) быстрее. Но это нужно кодировать руками. p.p.p.s. Тема учебника не раскрыта. Что за учебник (гугле ничего такого не находит), что же именно писал автор учебника, под какую именно базу данных были примеры (подозреваю или Oracle или MS SQL) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:46 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, ТС в очередной свой топик наступает на грабли. 8ой раз. И все ему обязаны сопли его подтирать. Безмерно ленив. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:50 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Вообщем максимально упростил сучности убрал все связи .... статистика не будет врать я думаю - значит инсерты все таки исполняются батчами почему тогда нет разницы по времени построчно или батчем Куча текста, куча ничего не значащих чисел и НЕТ НИ ОДНОЙ строчки кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Джун, ждем код на jdbc )))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:51 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, DDL дать обучали 3 года. Все впереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 13:52 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
По соседнему топику: 50500 екзекутов ,непонятно откуда взявшиеся 100 батчей и самое главное - время выполнения меньше на 30 секунд Подскажите кто в курсе что происходит вообще,почему булк инсерты не дали ни какого прироста производительности,а даже ухудишили ее ,хотя как мы видим должно было быть минимум в 50 раз быстрей 1. а даже ухудишили ее Подозреваю, bulk insert тут не причем. Ухудшили сиквенсы. Т.к. добавилось еще 50500 запросов к сиквенсам. 2. почему булк инсерты А должны были? ))) 3. UPDATE в логе совершенно лишнии. Я бы сначала разобрался, из-за чего у Вас такие команды кривые (явно это кривость Вашего прикладного кода). Не будет UPDATE - будет минимум в 2-а раза быстрее, а нагрузка на базу (и физический диск) вообще станет меньше раза в 3 (три). AFAIK команда update в PostgreSQL почти эквивалентна delete + insert. Т.ч. insert + update, для postgresql почти то же самое, что и insert+delete+insert ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 14:17 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, при любом варианте mvcc (multiversion concurrency control) update не бывает сладок. И оттенков горечи у него столько, сколько вариантов реализации самой версионности, в произведении на в конкретном случае использованный способ управления транзакциями. В итоге тьма вариантов и ни одного сладкого. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 14:56 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
booby update не бывает сладок для PostgreSQL с его мусором в файлах данных (и командой vacum), update наиболее горек. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 14:59 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
booby, Не надо требовать от ОРМ несвойственных ему фич. То что в jdbc делается одной строкой (коммит вне цикла for) тут такие пляски с бубном. Это как у меня на паркетнике пенсионном тойоте кнопка Спорт есть)))))) И даже нажимается))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 15:18 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev По соседнему топику: 50500 екзекутов ,непонятно откуда взявшиеся 100 батчей и самое главное - время выполнения меньше на 30 секунд Подскажите кто в курсе что происходит вообще,почему булк инсерты не дали ни какого прироста производительности,а даже ухудишили ее ,хотя как мы видим должно было быть минимум в 50 раз быстрей 1. а даже ухудишили ее Подозреваю, bulk insert тут не причем. Ухудшили сиквенсы. Т.к. добавилось еще 50500 запросов к сиквенсам. 2. почему булк инсерты А должны были? ))) 3. UPDATE в логе совершенно лишнии. Я бы сначала разобрался, из-за чего у Вас такие команды кривые (явно это кривость Вашего прикладного кода). Не будет UPDATE - будет минимум в 2-а раза быстрее, а нагрузка на базу (и физический диск) вообще станет меньше раза в 3 (три). AFAIK команда update в PostgreSQL почти эквивалентна delete + insert. Т.ч. insert + update, для postgresql почти то же самое, что и insert+delete+insert кода то нет ,о чем вы леня? две сучности и метод savaAll() update который вы видете в логах =хибер делал вставку FK тоесть механизм там такой - записывает сучности А потом сучности Б затем апдейтит сучности Б присваивая им фк сейчас я убрал и сучностей коллекции чтобы не портить чистоту эксперемента сиквенсы никак тут ниего не ухудшили,так как инкремент =50,хибер получает сразу пачку айдишников - на 10 000 записпей будет всего 200 селектов в секвенс ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, не надо мешать все в одну кучу. Мелодия про update исполняется на армянском дудуке. Нет музыки печальней и меланхоличней. А про ОРМ сыграть - тут без турецкой зурны не обойтись, для поддержки парного программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:25 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
booby, ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:35 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
booby, Вот смотри, аффтар третий раз произносит FK и надувает щеки. Проверь есть тут в топике ddl с FOREIGN KEY ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, >сейчас я убрал и сучностей коллекции чтобы не портить чистоту эксперемента = не прошло и двух суток ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:44 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Щас эксперементировал с размером батча,многие пугают что эфективное число должно быть между 10 и 40,сделал 40( было 500) результат не изменился ни на йоту,теже самые 34-35 секунд на вставку теперь уже 250 батчей ,вместо 20 хер его знает как это вообще возможно пс.нужно как то посмотреть что хибер отправляет - статистика то показывает батчи,но немного поработав с хибером я понимаю,что это может вообще ничего не значить) в логах базы просто 10 000 инсертов ,никаким батчем,булком там и не пахнет( может так и должно быть я не знаю) но ситуация в том,что 10 000 инсертов по времени делается столько же сколько и "Якобы" 20 батчей + 200 селектов в секвенс-ну явно не бывает таких чудес значит вот эта чудо статистика показывает чепуху Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:45 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp booby, Вот смотри, аффтар третий раз произносит FK и надувает щеки. Проверь есть тут в топике ddl с FOREIGN KEY ? давай ты не будешь уже до конца то позориться дядь 22349117 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:46 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp booby, Вот смотри, аффтар третий раз произносит FK и надувает щеки. Проверь есть тут в топике ddl с FOREIGN KEY ? давай ты не будешь уже до конца то позориться дядь 22349117 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:48 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Ты как слепой котенок с гонором ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:49 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Завис? Скажу еще тебе открытие - FK не применяют с каскадом. Поэтому и говорил тебе ВЧЕРА - убери циклы. Сделай два класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 16:55 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp O_79_O, Ты как слепой котенок с гонором я не пойму зачем я вообще тебе отвечаю это что по твоему дурик) Код: plsql 1.
а на счет каскадного удаления вообще лучше не позорься) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:06 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Завис? Скажу еще тебе открытие - FK не применяют с каскадом. Поэтому и говорил тебе ВЧЕРА - убери циклы. Сделай два класса. какие циклы,какие два класса что ты несешь то боже мой) там и так два класса А и Б лол меж ними связь 1 ко многим ,но чтоб ты не нервничал так сильно,видимо у тебя обострение)) я и ее убрал) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:08 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O в логах базы просто 10 000 инсертов ,никаким батчем,булком там и не пахнет( может так и должно быть я не знаю) 1) Блин. НУ НЕТ В PostgreSQL таких терминов "батч", "булк". Вообще НЕТ Максимально, что есть, это "insert multiple rows in a single command" в некоторых версиях документации "multirow insert". Что бы включить эту фичу в PostgreSQL JDBC драйвере, в строке соединения нужно прописать свойство reWriteBatchedInserts=true 2) В связи с п.1, совершенно не понятно, чего же Вы пытаетесь добиться и в чем у Вас проблема. значит вот эта чудо статистика показывает чепуху Это статискика Hibernate. Где тут чепуха, не понятно. update который вы видете в логах =хибер делал вставку FK тоесть механизм там такой Разбираться почему рабоает именно так. Не верю, что в Hibernate все настолько плохо. Просто не верю. Да и google не так однозначен. Он уверяет, что лишние update только в случае "unidirectional one-to-many". "Bidirectional one-to-many and both many-to-one association mappings are fine. But you should avoid unidirectional one-to-many associations in your domain model. " Хотя в приведенном Вами кусках кода на первой странице, вроде many-to-one присутствует. В общем - разбираться. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:10 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Я вижу ты нервничаешь. Где. ddl с FK? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:11 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Вооот. Направления связи. Он от тупости не понимает связей в бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:13 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Маппинг неверный. В пару классов воткнул каскад+fk+manytoone ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:15 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Завтра ждем по новой маппинг, код, ddl, логи. Котенок ты наш. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:17 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
update который вы видете в логах =хибер делал вставку FK тоесть механизм там такой https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:19 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Разбираться почему рабоает именно так. Не верю, что в Hibernate все настолько плохо. Просто не верю. Да и google не так однозначен. Он уверяет, что лишние update только в случае "unidirectional one-to-many". "Bidirectional one-to-many and both many-to-one association mappings are fine. But you should avoid unidirectional one-to-many associations in your domain model. " Хотя в приведенном Вами кусках кода на первой странице, вроде many-to-one присутствует. В общем - разбираться. IMHO еще раз для тех кто в танке посмотрите в логах бд ,какая именно колонка апдейтится и вы прозреете,почему это происходит- изза стратегии генерации идентификатора- если интересно почитайте ,много нового я думаю откроете. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:20 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev update который вы видете в логах =хибер делал вставку FK тоесть механизм там такой https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ разберитесь в механизме генерации идентификаторов,потом поговорим с вами,вы можете взять вот этот пример из вашей ссылки поменять идентификатор на секвенс и получите null в колонке FK ,почему так происходит можете почитать в у того же влада ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:22 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, Бегом за ddl умник, а потом будешь на профи наезжать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:30 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Leonid Kudryavtsev, Маппинг неверный. В пару классов воткнул каскад+fk+manytoone каскад хиберовский и каскад что ты видешь в ддл две разные вещи,умора ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:31 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O, И прекрати стращать своим длинным null в колонке. Достал. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:32 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O PetroNotC Sharp Leonid Kudryavtsev, Маппинг неверный. В пару классов воткнул каскад+fk+manytoone каскад хиберовский и каскад что ты видешь в ддл две разные вещи,умора ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:33 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev O_79_O в логах базы просто 10 000 инсертов ,никаким батчем,булком там и не пахнет( может так и должно быть я не знаю) 1) Блин. НУ НЕТ В PostgreSQL таких терминов "батч", "булк". Вообще НЕТ Максимально, что есть, это "insert multiple rows in a single command" в некоторых версиях документации "multirow insert". Что бы включить эту фичу в PostgreSQL JDBC драйвере, в строке соединения нужно прописать свойство reWriteBatchedInserts=true 2) В связи с п.1, совершенно не понятно, чего же Вы пытаетесь добиться и в чем у Вас проблема. вот этого и пытался добиться,скорость вставки стала на уровне консольной команды) А то если клоуна петруху слушать- то хибер у него "НЕ ДЛЯ ЭТАГА" ахахаах значит есть обоснованность замены идентификатора с Идентити на Секвенс ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:39 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
O_79_O Leonid Kudryavtsev пропущено... 1) Блин. НУ НЕТ В PostgreSQL таких терминов "батч", "булк". Вообще НЕТ Максимально, что есть, это "insert multiple rows in a single command" в некоторых версиях документации "multirow insert". Что бы включить эту фичу в PostgreSQL JDBC драйвере, в строке соединения нужно прописать свойство reWriteBatchedInserts=true 2) В связи с п.1, совершенно не понятно, чего же Вы пытаетесь добиться и в чем у Вас проблема. вот этого и пытался добиться,скорость вставки стала на уровне консольной команды) А то если клоуна петруху слушать- то хибер у него "НЕ ДЛЯ ЭТАГА" ахахаах значит есть обоснованность замены идентификатора с Идентити на Секвенс Все? Сливаешься? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:42 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Наверно увидел что FK в базе нет на самом деле)))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:43 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Помнишь тему "куда утекает память?" Тоже матерился как вовочка в школе. Щеки ужас надувал. А на деле оказалось пшик тема. Тут тоже. Тема - "как стас ddl показвать стеснялся". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 17:58 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 18:43 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 1) Блин. НУ НЕТ В PostgreSQL таких терминов "батч", "булк". Вообще НЕТ Максимально, что есть, это "insert multiple rows in a single command" в некоторых версиях документации "multirow insert". Что бы включить эту фичу в PostgreSQL JDBC драйвере, в строке соединения нужно прописать свойство reWriteBatchedInserts=true нет ли чего то подобного на апдейт ?чтобы не построчно обновлялись записи ,а вот на подобии этой или же чудо механизм постгреса ,который печется о конкуретности не даст нам такого сделать даже в рамках одной тразакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2021, 19:44 |
|
Реквестируем отличников по Хибернейт в тред,петро и ваде вход воспрещен)
|
|||
---|---|---|---|
#18+
Слушайте, Иван Иванович, песню "Кирпичики" и не выёживайтесь (ц) бородатый анекдот. Для "проблемы", которую вы "решаете" существуют параметризованные запросы и управление транзакцией, которое позволяет выбрать "размер" фиксируемой (откатываемой) пачки записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 07:40 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120389]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
24ms |
get topic data: |
4ms |
get forum data: |
1ms |
get page messages: |
2796ms |
get tp. blocked users: |
1ms |
others: | 6ms |
total: | 2856ms |
0 / 0 |