Изоляция транзакций в PostgreSQL работает на нескольких уровнях: docs.arenadata.io
Read Committed. habr.com docs.arenadata.io По умолчанию в PostgreSQL этот уровень изоляции. docs.arenadata.io В транзакции, работающей на нём, запрос SELECT видит только те данные, которые были зафиксированы до начала запроса. habr.com Он никогда не увидит незафиксированных данных или изменений, внесённых в процессе выполнения запроса параллельными транзакциями. habr.com Однако SELECT видит результаты изменений, внесённых ранее в этой же транзакции, даже если они ещё не зафиксированы. habr.com
Repeatable Read. docs.arenadata.io postgrespro.ru В режиме Repeatable Read видны только те данные, которые были зафиксированы до начала транзакции, а незафиксированные данные и изменения, внесённые другими транзакциями во время выполнения транзакции, не видны. docs.arenadata.io Однако запрос видит результаты предыдущих обновлений, выполненных в рамках его транзакции, даже если они ещё не зафиксированы. docs.arenadata.io
Serializable. habr.com docs.arenadata.io Уровень изоляции Serializable обеспечивает самую строгую изоляцию транзакций. docs.arenadata.io Этот уровень эмулирует последовательное выполнение транзакций для всех зафиксированных транзакций, как если бы транзакции выполнялись одна за другой, последовательно, а не одновременно. docs.arenadata.io Если две одновременные транзакции попытаются обновить одну и ту же строку, то это будет невозможно. habr.com В таком случае PostgreSQL принудит транзакцию к отмене (откату). habr.com
Примеры полезных ответов Поиска с Алисой на вопросы из разных сфер. Вопросы сгенерированы нейросетью YandexGPT для актуальных тем, которые определяются на базе обобщённых запросов к Поиску с Алисой.