Я читаю раздел 13.2 Руководства PostgreSQL , но найденные там текстовые описания недостаточно ясны и не содержат примеров.
Например, следующие два абзаца неясныкому изучается PostgreSQL:
INSERT с предложением ON CONFLICT DO UPDATE ведет себя аналогично.В режиме Read Committed каждая строка, предложенная для вставки, будет либо вставлена, либо обновлена.Если нет несвязанных ошибок, один из этих двух результатов гарантирован.Если конфликт возникает в другой транзакции, эффекты которой еще не видны для INSERT, предложение UPDATE повлияет на эту строку, даже если, возможно, ни одна из версий этой строки традиционно не видна команде. "
и
Режим многократного чтения обеспечивает строгую гарантию того, что каждая транзакция видит полностью стабильное представление базы данных, однако это представление не всегда будет соответствовать последовательному (по одному) выполнению.одновременных транзакций одного уровня. Например, даже транзакция только для чтения на этом уровне может видеть контрольную запись, обновленную, чтобы показать, что пакет завершен, но не увидеть одну из подробных записей, которая логически является частью пакета, потому что онапрочтите более раннюю версию контрольной записи.
Может ли кто-нибудь привести примеры, поясняющие, что содержится в этих двух абзацах?
Кто-нибудь знает, где можно найти формальное описание поведенияPostgreSQL изоляция levels?Я ищу это, потому что это сложная тема, которая, как мне кажется, формальное описание поможет прояснить, как это работает, и, следовательно, поможет избежать ошибок параллелизма между транзакциями.
ОБНОВЛЕНИЕ : еще одно сомнениеУ меня есть вопрос: как обрабатывается сериализуемая транзакция с точки зрения того, как механизм базы данных решает зафиксировать или прервать ее, когда он может работать одновременно с другими транзакциями на других уровнях изоляции?Решает ли база данных результат сериализуемой транзакции, как если бы другие транзакции также выполнялись с сериализуемой изоляцией?
Спасибо
ОБНОВЛЕНИЕ 2 : Пока что лучшийв отношении деталей реализации уровней изоляции можно найти PostgreSQL Wiki Serializable Page .