|
|
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2 Код: java 1. я бы сервер не трогал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 16:58 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2при пессимистической блокировке если у меня запускается мешок транзакций, то несколько исполняются в очереди, а остальные сыпятся с ошибкой: 18835378 Я вам первым же сообщением написал что пессимистик не годится для высоких нагрузок. Сколько у тебя продавцов томатов что они усердно за них конкурируют? Если ты highload пишешь для высокой конкурентности, то тебе блокировки вообще не подходят ни в каком виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 17:05 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Petro123у тебя логика должна - наложили блок, работаем, соммит (сняли) lor2, проверь, где это у тебя происходит? - в десктопе - сиди в локе хоть целый день. - в вебе обычно это в сервлете или ещё где, за 0,01 секунды! imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 17:16 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczlor2при пессимистической блокировке если у меня запускается мешок транзакций, то несколько исполняются в очереди, а остальные сыпятся с ошибкой: 18835378 Я вам первым же сообщением написал что пессимистик не годится для высоких нагрузок. Сколько у тебя продавцов томатов что они усердно за них конкурируют? Если ты highload пишешь для высокой конкурентности, то тебе блокировки вообще не подходят ни в каком виде. да это всё ясно конечно же. я о том, чтоб разобраться в нюансах работы. а вообще, у меня товарищ есть скулевец, он вообще лютый проповедник-пессимист. для него опт. принципиально не существует. ну видимо, мнений много разных. в практике у меня продавцов томатов не так уж и много, но вероятность что забронят больше, чем есть на складе свободного (если не морочиться блокировками) есть. по факту я конечно же там сделал тупо версионность как страховку и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 09:42 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2, ты не путай транзакции хибера, бизнес и технические. в сервлете у тебя должно так: ВИ №1 ОРМ + пессимистик + короткие ===================== за 0,01 сек Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 12:38 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2первый тяпнул 15 второй тяпнул 10 на выходе получаем минус 5??? технический овердрафт по дебетовой карте)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 12:47 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Petro123, ахахаха точно. оно и есть. значит они тоже мучаются с такими проблемами. Петро, ты извини, я просто не умею думать скулем, я думаю хиберовскими шаблонами :) разумеется, если речь о транзакции то это в рамках хибера. скажу более речь (с моей стороны) идет в рамках методов, помеченных аннтотацией "транзакшионал". идею в общем то понял, просто для меня грань еще более размытой стала между лок на чтение и оптимистик. если я делаю лок на чтение то последующие транзакции типа "в очереди ждут" а потом отваливаются бросая ексепшн, если ждут "долго", в оптимистике у меня тупо сразу же если версия изменилась идет откат транзакции и так же вылетает ексепшн. в обоих случаях надо городить логику как себя вести при ексепшене. либо ждать либо юзера посылать подальше либо еще что-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 14:31 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2значит они тоже мучаются с такими проблемами ты про банки? Они не мучаются). Наоборот переложи на плечи клиентов свои проблемы. Транзакции то - отложенные и распределённые. Иначе ни как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:12 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2в обоих случаях надо городить логику конечно надо. Например, в десктопе длинная пессимистик: ==================== - в Урюпинске чел СМОТРИТ список товаров (select обычный) - нажимет на выбранном товаре РЕДАКТИРОВАТЬ = (select update) (если заснул, то все ругаются кто заблокировал) - OK = Commit = выход из блока и гарантия что никто в минус не ушёл Например, в десктопе КОРОТКАЯ пессимистик: ================ - (select update) только в момент изменения значения как выше в сервлете Оптимистик будет хибером при сохранеии вылетит что НЕ ПОЛУЧИЛОСЬ. ... Типо так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:18 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Petro123lor2первый тяпнул 15 второй тяпнул 10 на выходе получаем минус 5??? технический овердрафт по дебетовой карте)) Я с технический "овердрафт по дебетовой карте" сталкивался только тогда, когда КОММИСИЯ банка не помещалась в остаток по счету. Т.е. деньги у меня есть, а вот на КОММИСИЮ банка(ов) не хватило Дебетовая карточка, которая позволяет лихо "тяпать 15 кг. помидоров и потом без денег еще 10" - не видел. Мало того, некоторые банки свою коммисию даже в выписку по карточному счету не включают. Сам так лет 15 назад пытался выяснить, почему деньги на начало периода - выписка по счету != деньги на конце периода. Оказалось, что ежегодный платеж за пользованием карточкой в выписку не включается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:18 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, я хз у меня есть валютная визакард, и действительно раз вышло что на алиюшке заказал два товара на сумму больше чем по карте и карта ушла в минус )) карта дебетовая. покупки делал подряд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:36 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
чота я щас сижу и думаю, что оказывается у меня очень много случаев работы с базой когда может произойти лютый треш если не делать хоть какую то блокировку, аж волосы на спине зашевелились. )) типа одна транзакция закидывает бабки а другая их списывает. и может выйти так что списала с той суммы, которая была до закидывания первой транзакцией в итоге закидывание вообще пропадает но списание проходит. ненене. версионирование - без него по ходу никуда. кстати, ткой вопрос в контексте спринга и его аопа. вот у меня приложение, ну как положено транзакшн манагер и всё такое. каждый метод, где хибер работает в сервисном слое я помечаю аннотацией транзакшнл и т.п. теперь собссно вопрос: спринг в хибер один раз открыл сессию на момент скажем так инициализации и всё время ее держит открытой? или открывает закрывает каждый раз с запуском метода помеченного транзакшнл? или там еще какой то механизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 09:27 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2теперь собссно вопрос: спринг в хибер один раз открыл сессию на момент скажем так инициализации и всё время ее держит открытой? или открывает закрывает каждый раз с запуском метода помеченного транзакшнл? или там еще какой то механизм? https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate3/HibernateTransactionManager.html По-умолчанию одна сессия на одну транзакцию. При остром желании это можно изменить, но нужно понимать что делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 09:39 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2версионирование - без него по ходу никуда. Ты не учился в ВУЗе? ))) Первое что делают - списывают и ищут "рыбу". - найди аналог из сети твоего ВИ \ use case. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:09 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2может произойти лютый треш если не делать хоть какую то блокировку, аж волосы на спине зашевелились. )) "Компромиссы и проблемы" http://www.k-press.ru/cs/2009/3/ts/ts.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:12 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Petro123lor2версионирование - без него по ходу никуда. Ты не учился в ВУЗе? ))) Первое что делают - списывают и ищут "рыбу". - найди аналог из сети твоего ВИ \ use case. я учился в вузе 6 лет, но мое направление хоть и связано с техникой, но мало связано с программированием. автор По-умолчанию одна сессия на одну транзакцию. При остром желании это можно изменить, но нужно понимать что делаешь. просто есть мнение что открытие и закрытие сессии в хибере отгрызает достаточно много ресурсов и делая много мелких тразакций ты эти ресурсы будешь под себя подгребать. с другой стороны делая мало длинных трнанзакций ты тоже получаешь определенные недостатки. что лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:13 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2типа одна транзакция закидывает бабки а другая их списывает общее правило - Ты должен страться уйти вообще от блокировок. Тебя не смущает, что ты просматриваешь тут тему, а она может быть удалена админом в данный момент. Или мы смотрим на звезду, а она уже миллионы лет не существует)). ... Сначала помидоры разбери, прежде чем везде версии совать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:17 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2что лучше вошёл в сервлет = открыл вышел из сервлета = закрыл и забыл. Разве не очевидно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:19 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
lor2просто есть мнение что открытие и закрытие сессии в хибере отгрызает достаточно много ресурсов Мнение авторитетное или так себе? Открытие сессии не стоит ничего. Закрытие, естественно, отжирает ресурсы, так как оно связно с обновлением состояния и коммитом транзакции. lor2 и делая много мелких тразакций ты эти ресурсы будешь под себя подгребать. Это лирика, которая к технической стороне вопроса никакого отношения не имеет. lor2 с другой стороны делая мало длинных трнанзакций ты тоже получаешь определенные недостатки. Короткие транзакции лучше, это в каждом букваре написано. Чем короче транзакции, тем меньше между ними соперничества, тем меньше системе нужно тратить ресурсов на разруливание конкуренции. А на тупых блокировочниках типа MySQL длинные транзакции это смерть системы под нагрузкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:19 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz тебе уже сказал. Откуда мелкие транзакции тогда могут у тебя произойти? При декларативных ставь то, что написано выше статье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:22 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Petro123вошёл в сервлет = открыл вышел из сервлета = закрыл и забыл. Разве не очевидно? Если сервлет это бизнес-транзакция, то да. А если это всего лишь View к бизнес-слою, то, наверное, не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:33 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Да уж. Читаю и волосы встают дыбом. А еще меня удивляло, как система мировой лидер ( Oracle Customer Care & Billing, SPL WG Customer Care & Billing) умудряется ничего не блокировать и создавать одному клиенту по два одинаковых счета на одну и ту же дату. Тот же подход... Hibernate, @Version и не е#$т ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:42 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczЕсли сервлет это бизнес-транзакция, то да. А если это всего лишь View к бизнес-слою, то, наверное, не надо. да, конечно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:44 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
Вчера набивал ответ в данную тему, потом стер. Т.к. IMHO вопрос топикастера с Java и Hibernate связан слабо. Концептуально проблема как организована работа с системой и данными. И вопрос скорее относится к форуму ERP. Т.к. я бы разделял две задачи: 1. Форма ввода документов Тут есть блокировка и запрета одновременного ввода несколькими пользователями. Решать можно по разному. Но проблем "списание", "остатков на складе" и так далее нет. По определению 2. Проведение операций (транзакций) в системе. Тут обычно нет проблемы "длинных транзакций". Все транзакции обычно короткие. Если одно с другим не смешивать - особых проблем быть не должно IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 10:51 |
|
||
|
Hibernate разрешение конфликтных ситуаций?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczКороткие транзакции лучше, это в каждом букваре написано. Чем короче транзакции, тем меньше между ними соперничества, тем меньше системе нужно тратить ресурсов на разруливание конкуренции. А на тупых блокировочниках типа MySQL длинные транзакции это смерть системы под нагрузкой. я по собеседованиям походил и такого наслушался, что уже сам себе не верю. да, я так же считаю как ты написал. вернее я так не считаю я так читал в куче источников. Петро, так что там насчет помидоров то не так? процесс прост как дважды-два: есть помидоры - откусываем от доступных остатков - перекладываем в заброньканые остатки-коммитимся. нет помидоров - идем мимо. по деньгам просто если параллельно вдруг так случится отработают две транзакции просто в худшем случае без всяких блокировок выйдет так что (кажется в 1с это регистр называется ) так вот регистр у клиента будет показывать на счету 100 рублей, а по факту (и по логу денежных транзакций) у него 150 рублей. это в самом худшем для него случае. надо просто пересчет делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39193552&tid=2124254]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 392ms |

| 0 / 0 |
