|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Basil A. Sidorov вернёт заданные поля вставленной записи. Если, конечно, есть поддержка в драйвере. Если нет, то на первом проходе делаем вставку, а на втором - выбираем искомые идентификаторы для всех исходных значений. Коряво, но вполне работоспособно. asv79Но вот когда ты сталкиваешься с многопоточкой Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет p.s. в сообщении 22314707 no_data_found конечно опечатка, скорее всего, что-то типа DUP_VAL_ON_INDEX будет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2021, 20:03 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет На самом деле так: 1. tx1 началась, вставила запись 2. tx2 началась, при вставке заблокировалась на изменении индекса. Ну а дальше два возможных варианта: 3.a tx1 делает коммит, что разблокирует tx2 и та валится с исключением 3.b tx1 делает rollback, что разблокирует tx2 и та удачно вставляет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2021, 22:28 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79, я тут только счас понял что SELECT делается потому что у Email'ов есть ID. Так вот.. Раз email'ы уникальные, почему бы вообще не избавиться от суррогатного Primary Key и не использовать email в качестве PK? Тогда SELECT вообще не нужен будет. А в Foreign Key можно прям email и писать. Хотя наверно ты мигрируешь в уже готовую схему, менять ее уже не выйдет.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.04.2021, 22:40 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Без классов прям совсем никак (или mybatics?)? Хотя предложенный ранее insert/on conflict retur... выглядит более логичным. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 00:11 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Leonid Kudryavtsev Одна сессия вставили и НЕ закомитела Вторая сессия пытается вставить - получает exceptin Пытается получить ID-ник SELECT'ом - а облом ))) Первая сессия коммитет, но второй это уже не поможет Получит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 01:56 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79 зато работает быстро - если ввести переменную -замедляется процесс ,так как все это в цикле ,в котром будет куча мусора из под этих временных объектов Херово жить без профильного образования. Когда ты делаешь 6 раз гет у тебя ничего не выполняется в этот момент? Гет берется из астрала за 0,5 такта цп? А что я говорил в прошлом треде? Вот, ты опять танцуешь вокруг своей орм с костылями и подпорками, а мы смотрим и смеёмся. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 04:03 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
crutchmaster asv79 зато работает быстро - если ввести переменную -замедляется процесс ,так как все это в цикле ,в котром будет куча мусора из под этих временных объектов Херово жить без профильного образования. Когда ты делаешь 6 раз гет у тебя ничего не выполняется в этот момент? Гет берется из астрала за 0,5 такта цп? А что я говорил в прошлом треде? Вот, ты опять танцуешь вокруг своей орм с костылями и подпорками, а мы смотрим и смеёмся. смотри я ж не просто так сделал все эти длинные касты- я протестировал с ними и без них - создание нового объекта очень сильно нагружает процесс - и да - пусть код не очень хорошо читаем,но он быстрее где то на 20% орм то тут причем? или мне может пойти к руководству и сказать - давайте братцы - выделите бюджет млн 10 -15 на переписку сервисва на ждбси?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:05 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev asv79, я тут только счас понял что SELECT делается потому что у Email'ов есть ID. Так вот.. Раз email'ы уникальные, почему бы вообще не избавиться от суррогатного Primary Key и не использовать email в качестве PK? Тогда SELECT вообще не нужен будет. А в Foreign Key можно прям email и писать. Хотя наверно ты мигрируешь в уже готовую схему, менять ее уже не выйдет.. да у емайл есть id поэтму до кучи мне пришлось переделать их с identity на sequence иначе селекты вообще не проходили - так как присовоение id идет при записи пс.да миграция идет в готовую схему - которую никто не даст менять поэтому приходится работать с невалидными данными со стороны монго и с другой постгрес - которая не отвечает даже 1 нф ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:10 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Basil A. Sidorov ...Или это слишком банально и содержит мало объектных типов? IMHO скорее всего не поможет. Ему еще ID'шник из базы получить нужно. А тут даже try { INSERT ... } exception WHEN_NO_DATA_FOUND { SELECT ... } может не помочь, при обычном Read committed ))) такая схема работает инсерт в try ->exeption ->catch ->select правда скорость оставляет желать лучшего ,но по крайне мере я добился чего и хотел ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:13 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Скорее всего должен быть обернут в synchronized. А если мы хотим еще данный список еще и с БД поддерживать в корректном состоянии, то и insert и commit так же должен быть в этом же блоке synchronized. IMHO посмотри сюда на первое сообщение Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:15 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Stanislav Bashkyrtsev пропущено... Вторая транзакция не получит exception пока первая не закоммитит, иначе это бы нарушало изоляцию READ COMMITTED. Мол, вставить запись не могу, хоть даже записей с таким значением нет в таблице. Получит. asv79орм то тут причем? или мне может пойти к руководству и сказать - давайте братцы - выделите бюджет млн 10 -15 на переписку сервисва на ждбси?)))В целом-то сервис не обязательно трогать, только миграцию писать на JDBC. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:20 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
[quot Stanislav Bashkyrtsev#22314670 Я правда не понял зачем ты вообще SELECT делаешь, если у тебя и так email есть.. Получается какой-то бесполезный Код: java 1.
/quot] все очень просто - там три сущности - первая это ящик- далее рассылка и третья M2M тоесть я пишу рассылку далее в цикле прогоняю ящики и м2м для чего нужен такой селект - чтобы у меня на руках был id емайл которй я могу записать в м2м вообщем трай кетч работает - большего и не требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:20 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79, >там три сущности - первая это ящик- далее рассылка и третья M2M =незачет. След топик начинай с DDL))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:40 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 09:42 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79 орм то тут причем? Притом, что ты пляшешь вокруг него с подпорками и приседаешь. asv79 создание нового объекта Ссылки ты хотел сказать? Нагружает процесс, да? asv79 или мне может пойти к руководству и сказать Да не надо тебе ничего менять, всё нормально. Ты же сам его выбрал и рассказываешь, какой он крутой. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 10:23 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 10:35 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Многопоточная вставка это то, что не надо делать с базой. в одном потоке слишком долго,хотя SLA на процессы нет - то может и придется писать в однопоточке ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 10:39 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79 PetroNotC Sharp asv79, Новые сущности, в эксклюзивном режиме, можно писать без генерации айди в бд. Джун ты наш. вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) Вставляем мастер с айди 123 и потом в детайль с этим же 123. Ничего запрашивать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 10:42 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79 Basil A. Sidorov Многопоточная вставка это то, что не надо делать с базой. в одном потоке слишком долго,хотя SLA на процессы нет - то может и придется писать в однопоточке Ты с работающей однопоточки начать должен был. Потом тюнинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 10:44 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
PetroNotC Sharp asv79 пропущено... вот это новость ) а кто то утверждал что нельзя? а вот если сущнность содержит ссылку на другую сущность - то вроде как уже нужен id) Вставляем мастер с айди 123 и потом в детайль с этим же 123. Ничего запрашивать не надо. ааа вот оно чо ,а айди то ты где возьмешь) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 11:05 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79, Выше писал. Счетчик на клиенте. Хоть до миллиарда. Потом вкл индекс PK ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 11:09 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79, Есть куча решений. Но: - ты не дал DDL - ты слился - ты не сделал однопоточку и не дал цифры ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 11:10 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev asv79Но вот когда ты сталкиваешься с многопоточкой И даже если не касаться азов устройства СУБД, то задлянафига в сугубо последовательном процессе многопоточка? Чтобы оно сразу было и сразу глючило? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 12:39 |
|
Как избежать проблем )
|
|||
---|---|---|---|
#18+
asv79 в одном потоке слишком долго ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2021, 12:43 |
|
|
start [/forum/topic.php?fid=59&msg=40066207&tid=2120462]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
33ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
533ms |
get tp. blocked users: |
0ms |
others: | 274ms |
total: | 868ms |
0 / 0 |