Search
Write a publication
Pull to refresh
6
0
Send message

На этом уровне изоляциии проверка и блокировка конкурентов происходит на стейтменте ( UPDATE ) а не во время commit(). Апдейты должны произойти последовательно updateDebit(tx1) , updateCredit(tx1), updateDebit(tx2), updateCredit(tx2), - а Select и проверка java будет строго после апдейтов каждая в своей транзакции

Если две транзакции изменили одно и то же состояние строки - закоммичена может быть только одна из них.

В PostgresSQL - изменяющий стейтмент (e.q. UPDATE) ожидает завершения параллельной транзакции изменившей ту же строку первее, а затем, перепроверит условие мэтча. В lock реализации - строка блокируется на запись до завершения транзакции.

Если две транзакции изменили одно и то же состояние строки - закоммичена может быть только одна из них.

В PostgresSQL - изменяющий стейтмент (e.q. UPDATE) ожидает завершения параллельной транзакции изменившей ту же строку первее, а затем, перепроверит условие мэтча. В lock реализации - строка блокируется на запись до завершения транзакции.

Большое спасибо, моя грубая ошибка - исправил

Спасибо, добавил пояснение что все блоки в одной транзакции

Спасибо. В этих примерах фантомные чтения не помешают. Но их можно будет рассмотреть на другой подобной задаче

Спасибо, добавил пояснение что все блоки в одной транзакции. спорный текст - также уточнил что я имел в виду.

Замечание справедливое. Исправил вступление. Туториал c фокусом на понимание изоляций и свойств стэйтментов. В этой статье рассматриваю только проблему обновления двух счетов. Бухгалтерские системы гораздо сложнее.

Information

Rating
684-th
Registered
Activity