Oracle продолжение | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
2 pasha_usue
Можем продолжить здесь. Что нужно? Код примера? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Oracle продолжение | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Я примерно помню. Для этого бизнес-приложения я бы попробовал уровень изоляции serializable, без установки блокировок. Поменяем дэдлоки на ролбэки, а последние можно рулить уже на клиентах. |
Re: Oracle продолжение | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Не поможет
Во втором, получаем Цитата:
SERIALIZABLE от READ COMMITTED при Update/For Update отличаются только тем, что Update/For Update накладывает и удерживает X блокировку на строку до конца транзакции, а SERIALIZABLE накладывает и удерживает RowX (RangeX) блокировку (блокировка диапазона) до конца транзакции, а поскольку в примере диапазона нет, то SERIALIZABLE ведёт себя как READ COMMITTED (почти ). ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 06.04.22 10:13 |
Re: Oracle продолжение | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
И занафига так делать?
|
Re: Oracle продолжение | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Ну я же говорил. В первой транзакции с твоего счета снимается 100р и переводится на другой счет - счет мобильного оператора, между первой и второй командой update банк решил начислить тебе проценты на счёт в конце месяца, или пример склада, с одного склада перекладывают 100 шт на другой склад, в этот момент оптовик пытается забрать всё со всех складов. Пример жизненный-рабочий, другое дело, что большинство из нас никогда с этим не встречались, поэтому кажется, что он высосан из пальца. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Oracle продолжение | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Исправлено 2 раз(а). Последнее : pasha_usue, 06.04.22 11:09 |
Re: Oracle продолжение | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Для Pg и Oracle какая ошибка? и при каком TIL? DDL табличек тоже нужно. Если в примере 2 "вложенные" транзакции, то: MySQL ждёт - так и должно быть, пока первая Tr не завершилась, вторая ждёт. . Для MSSQL тоже не вижу проблем, вторая транзакция будет ждать первую, те Tr1 на T1 установила X блокировку на все записи таблицы (эскалацию блокировок пока не рассматриваем). Дальше уже не важно, когда вклинивается транзакция Tr2, поскольку она будет ждать снятия X блокировки с таблицы Т1, а это случится только при втором COMMIT, опять же если рассматриваем Heap-таблицы. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 06.04.22 12:20 |
Re: Oracle продолжение | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Гоню. Этот сценарий не нарушает логической целостности. Ни при последовательном исполнении транзакций, ни в сценарии конкуренции.
А так, "could not serialize access due to concurrent update". Исправлено 1 раз(а). Последнее : pasha_usue, 06.04.22 12:37 |
Re: Oracle продолжение | |
---|---|
PaulWist Автор Сообщений: 14618 Дата регистрации: 01.04.2004 |
Кстати, данное сообщение говорит о том, что выставлен TIL SNAPSHOT. И вообще, Oracle "пожинает плоды" версионника, те он не умеет выставлять TIL SERIALIZABLE, по факту получается TIL SNAPSHOT. Статья на "пальцах" объясняет такое поведение. blog-dbi--services-com.translate.goog ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
© 2000-2024 Fox Club  |