|
|
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevВ случае успешной вставки строки заменяем случайный ID на штатный из последовательности и на этом всё. ...когда коту делать нечего, он рэндом ID генерирует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 17:56 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous...когда коту делать нечего, он рэндом ID генерирует...Простите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 18:13 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevПростите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером.Цирк: моська и слон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 18:15 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
Elic, Понял, отлетаю. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 18:23 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevStaxd.nemolchev, у Migelle ситуация не с ID, а с str 20935441 .... stax А я про что? Вы про id, а Мигель о str у него есть конкретное значение str, он сначала ищет ... .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 18:45 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
Stax, Внимательно проанализируйте мой код и сравните его действия с потребностями топикстартера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 18:49 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
Migelleк заголовку параллельно добавляются подчиненные записи множеством процессов. Первый процесс создает заголовок, остальные пользуются им. Судя по переписке, логика межпроцессного взаимодействия предполагает, что some_value суть уникальный идентификатор заголовка. Какую пользу приносит в этой ситуации суррогат? Похоже, что никакой. Тогда в случае, когда новые ID появляются относительно нечасто: 1. Постройте по str или по самодельной ~детерминированной функции от него обычный индекс и объявите PK с отложенной проверкой (deferrable initially deferred), что уже предлагалось в топике. 2. Все процессы самостоятельно считают идентификатор на базе some_value согласно алгоритму п.1 и тупо накидывают дочерние записи. 3. Если при фиксации транзакции ловите exception FK - просто вставляете парента с перехватом и игнором нарушения PK. 4. Профит. Если новые ключи генерируется постоянно - то то же самое, но deferred не делаем и вставку-игнор лепим первым шагом. В некоторых случаях можно синхронизировать процессы посредством dbms_lock, но не уверен, что это имеет смысл в контексте задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 19:18 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Да ты просто гений проектирования пользовательских интерфейсов! Пользук такой набирает, набирает пачку данных, старается, бедолага, а ты ему потом в самый финальный момент - бах! и ексцепшеном по лицу. Офигеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 19:35 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevStax, Внимательно проанализируйте мой код и сравните его действия с потребностями топикстартера. и где в Вашем коде поиск id (вернуть в переменной v) если str = some_value в табличке уже существует? ps у Migelle с генерацией id нет проблем (мож у него 12 + автономер) .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 09:57 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevВнимательно проанализируйте мой код и сравните его действия с потребностями топикстартера. Migelleесть уникальный индекс по str И чем тут твой код помог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 10:12 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchev, d.nemolchevПростите, я не увидел в данной ветке вашего варианта решения проблемы, означенной топикстартером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 10:14 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
[quot Stax]d.nemolchevи где в Вашем коде поиск id (вернуть в переменной v) если str = some_value в табличке уже существует? А, да. Сосредоточившись на избегании дубликатов при вставке новых, упустил. Там, где обрабатываем DUP_VAL_ON_INDEX надо конечно же не Код: plsql 1. а Код: plsql 1. Но проблема-то топикстартера не в поиске и возврате ID, а совершенно в другом: MigelleКогда начало работать несколько параллельных процессов появились ошибки дубликатов при инсерте, т.к. между чтением и инсертом другой процесс успевал вставить запись. Переделал код /*скипнуто*/ Но все равно выглядит некрасиво. Если соседний процесс, вставивший запись, откатит транзакцию получим исключение NO_DATA_FOUND. А есть ли более красивые стандартные решения такой проблемы? Или участники дискуссии в пылу обсуждения забыли какова его цель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 13:00 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
[quot d.nemolchev]Staxпропущено... А, да. Сосредоточившись на избегании дубликатов при вставке новых, упустил. Там, где обрабатываем DUP_VAL_ON_INDEX надо конечно же не Код: plsql 1. а Код: plsql 1. Но проблема-то топикстартера не в поиске и возврате ID, а совершенно в другом: пропущено... Или участники дискуссии в пылу обсуждения забыли какова его цель ? Дубликатов не id, а str зачем заморочки з рандомным id я не понимаю ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 13:29 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
StaxДубликатов не id, а str Да. И у меня код тоже нацелен на избежание дубликатов str, а не id. Staxзачем заморочки з рандомным id я не понимаю Чтобы сессии разных пользователей, работающих одновременно с этой процедурой "найти, если нету - вставить", не блокировали друг друга. Ведь на ID висит primary key, не так ли? Или вы планируете вместо рандомного ID, значения которого лежат вне рабочего диапазона используемых в таблице ID, использовать значения, получаемые из соответствующего сиквенса, накручивая его при этом вхолостую при каждом факте проверки (а проверок таких может быть очень-очень много в день)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:15 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
нет деферраблюandrey_anonymous, Да ты просто гений проектирования пользовательских интерфейсов! 1. при чем тут вообще пользовательский интерфейс? Пользовательский подразумевает поиск родительской записи и окошко для ее создания. У ТС интерфейс технологический. 2. для людей без соображения воображения: Код: 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. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:16 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
d.nemolchevStaxДубликатов не id, а str Да. И у меня код тоже нацелен на избежание дубликатов str, а не id. Staxзачем заморочки з рандомным id я не понимаю Чтобы сессии разных пользователей, работающих одновременно с этой процедурой "найти, если нету - вставить", не блокировали друг друга. Ведь на ID висит primary key, не так ли? Или вы планируете вместо рандомного ID, значения которого лежат вне рабочего диапазона используемых в таблице ID, использовать значения, получаемые из соответствующего сиквенса, накручивая его при этом вхолостую при каждом факте проверки (а проверок таких может быть очень-очень много в день)? не понимаю зачем нужен Dbms_Random и тут же Update Tbl t Set t.Id = Seq.Nextval? что накручивть и главное зачем? но то и не важно, автор наверное уже все свои проблемы решил ...... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:59 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Коммит в серверной процедуре? Еще прекраснее. Вы ни разу в прикладе не получали "наполовину закоммиченный" бизнес-процесс? Скажите в какой конторе вы работаете - я буду ее обходить десятой дорогой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:26 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
нет деферраблюКоммит в серверной процедуре? Где мсье видит процедуру? Прошу не приписывать мне собственных измышлизмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:29 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Ах, ну да. Анонимный блок, скорее всего являющийся частью другого, очень длинного, бизнес-процесса, и даже может быть не одного, а нескольких. Это в корне меняет дело, черт побери! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:50 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
нет деферраблюАнонимный блок, скорее всего являющийся частью другого, очень длинного, бизнес-процесса, и даже может быть не одного, а нескольких. Или, как, собственно, было задумано, являющийся просто демонстрацией подхода, указанного на предыдущей странице топика. В общем и целом не советовал бы копипастить чужой код в свои проекты без осмысления и приложения к собственной задаче - тогда, возможно, не придется встречать "наполовину закоммиченные бизнес-процессы". Итого: 1. мсье для начала неверно определил технологическую задачу как "пользовательский интерфейс", чем продемонстрировал ограниченность собственного кругозора. 2. потом измыслил авторКоммит в серверной процедуре чем продемонстрировал неумение управлять транзакцией иначе, чем в хранимом коде. 3. заявил серьезный опыт в области получения автор"наполовину закоммиченный" бизнес-процесс Ну и кто ты после этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 17:08 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous1. мсье для начала неверно определил технологическую задачу как "пользовательский интерфейс", чем продемонстрировал ограниченность собственного кругозора. А данные в БД, по-вашему, появляются откуда? andrey_anonymous2. потом измыслил авторКоммит в серверной процедуре чем продемонстрировал неумение управлять транзакцией иначе, чем в хранимом коде. Кто-то это продемонстрировал? Ну-ка поподробнее. andrey_anonymous3. заявил серьезный опыт в области получения автор"наполовину закоммиченный" бизнес-процесс Получения? А может вычищения подобной срани после вам подобных умников, ее в коды приложения пихающих? Ну и кто ты после этого? )))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 17:28 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
нет деферраблюА данные в БД, по-вашему, появляются откуда? В порядке ликбеза: Данные появляются в БД по-разному. Причем серьезные объемы - обычно минуя UI. Грузятся из файлов, приходят по интеграционной шине, затаскиваются DI-системами, собираются с датчиков, генерируются на основе уже имеющихся данных. Я понимаю, мсье ничего кроме UI не видел(а), а мир из подразделения мелкого саппорта видится как "навоз и дерьмо" (с). Но все-таки попробуйте немножко вынырнуть из недр недосистемы, за которой подчищаете - это сильно ограничивает Ваш профессиональный опыт. И перестаньте уже разбрызгивать собственные... ммм... печали на окружающих - это не принесет ни признания, ни уважения. И ещё. Продолжать обсуждение Ваших фобий и болезненных фантазий мне не очень не интересно. Будет что-то по делу - велкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 17:50 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousПричем серьезные объемы - обычно минуя UI. Грузятся из файлов, приходят по интеграционной шине, затаскиваются DI-системами, собираются с датчиков, генерируются на основе уже имеющихся данных. А, ну если ты намерен бросать эксцепшен в лицо не одного индивидуального юзера, введшего через UI одну пачку связанных данных, а сразу выкидывать серьезный объем данных, пришедший по интеграционной шине, то это конечно же сразу в корне меняет дело! Делов-то - переслать повторно по ИШ пару-тройку (сотен) мегабайт данных... как два байта переслать Или же заново всосать в ИС пару-тройку (сотен) файлов, или же (что вообще прекрасно) послать на эксцепшен датчик, приславший данные... Просто прекрасно. Скажите мне в какой конторе вы работаете - я буду обходить ее десятой дорогой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:06 |
|
||
|
Паралеллльный инсерт
|
|||
|---|---|---|---|
|
#18+
нет деферраблюА, ну если ты намерен бросать эксцепшен в лицо не одного индивидуального юзера, введшего через UI одну пачку связанных данных, а сразу выкидывать серьезный объем данных Как я уже отметил, обсуждать Ваши болезненные фантазии мне не интересно. Никакой объем нигде не выкидывается. Есть как минимум один вопрос по сути представленного короткого демо, но Ваша паранойя пока даже не близко. Не насилуйте мозг, не Ваше это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39550447&tid=1884939]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 532ms |

| 0 / 0 |
