Skip to content

Hm4#195

Open
tttonyalpha wants to merge 4 commits intoL1mple:mainfrom
tttonyalpha:hm4
Open

Hm4#195
tttonyalpha wants to merge 4 commits intoL1mple:mainfrom
tttonyalpha:hm4

Conversation

@tttonyalpha
Copy link
Copy Markdown

Прикрутил базу (PostgreSQL в docker-compose), перевёл сервис на SQLAlchemy, таблицы создаются на старте. Для проверки написал scripts/verify_isolation.py, он гоняет параллельные транзакции и пишет отчёт в log.txt.

Логи лежат в scripts/log.txt
• Dirty read: в PostgreSQL его нет — при уровне READ COMMITTED второй поток видит старое значение, а после роллбэка всё остаётся как было - все гуд
• Non-repeatable read: при READ COMMITTED первый запрос видит одно значение, второй — уже другое после коммита соседа. Аномалия поймана
• Non-repeatable read исчезает на REPEATABLE READ: оба чтения внутри одной транзакции возвращают один и тот же срез. Снимок работает
• Phantom: при READ COMMITTED счётчик строк растёт между двумя чтениями одной транзакции — фантом есть
• Phantom пропадает на REPEATABLE READ: счётчик стабилен, никаких внезапных строк
• Serializable: write-skew — на REPEATABLE READ оба потока могут закоммититься и испортить инвариант, а на SERIALIZABLE один из них откатывается с ошибкой сериализации - инвариант сохранён

база подключена, CRUD жив, метрики на месте, сценарии изоляции воспроизводимы и корректно гасятся нужными уровнями - all done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant