172 похожих чатов

Евгений, нельзя этого сделать. Чтобы защититься от параллельного добавления строк

в таблицу transactions нужно заблокировать предикат "WHERE user_id=?", а в постгресе так нельзя. Можно заблокировать таблицу transactions целиком, но тогда всё встрянет

8 ответов

19 просмотров

Значит остается advisory_lock как наиболее производительный вариант и все получается?

Нет, для обеспечения consistency не нужно ничего блокировать. Кроме блокировок существуют другие методы обеспечения изоляции, понимаете?

alex-che Автор вопроса
Yaroslav Schekin
Нет, для обеспечения consistency не нужно ничего б...

Сейчас я понимаю, что у автора XYZ-story, и надо уточнять, что вообще происходит, и чего хотите получить. Но тогда я ответил на конкретный вопрос: "как сделать так, чтобы на момент коммита нашей транзакции, было соответствие между записанной суммой и реальной?"

alex che
Сейчас я понимаю, что у автора XYZ-story, и надо у...

Эээ.... кого вообще волнуют "моменты"? ;) Они, строго говоря, не имеют отношения к тому, как работает изоляция примерно во всех (многопользовательских) ACID СУБД. Важно то, в каком состоянии транзакции способны увидеть базу, не более того. Т.е. если транзакция_2 выполняется параллельно "нашей транзакции", совершенно неважно, увидит она базу по состоянию до или после "нашей транзакции". Более того, во (всех?) реализациях MVCC это именно "до".

Yaroslav Schekin
Нет, для обеспечения consistency не нужно ничего б...

А что на счет lost update ? Ну допустим у меня 2 транзакции и первая завершилась позже второй, то тут снова кривой баланс?

Evgeny Kungurov
А что на счет lost update ? Ну допустим у меня 2 т...

Во-первых -- баланс в любом случае будет прямой! И в любом случае это будет прямой баланс на какой-то момент в прошлом. Во-вторых -- c read committed вторая транзакцыя дождётся результата первой. В остальных isolation level она откатится.

Ilya Anfimov
Во-первых -- баланс в любом случае будет прямой! И...

Я почему то думал что при лаге сети или еще чего-то порядок трандакций не гарантирован и вторая может завершиться раньше первой

Evgeny Kungurov
Я почему то думал что при лаге сети или еще чего-т...

Эта последовательность вообще крайне мало зависит от лагов в сети.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта