DBAtlas · Атлас эксплуатации баз данных

40001: serialization_failure

PostgreSQL

Что это значит?

На уровне изоляции SERIALIZABLE или REPEATABLE READ транзакцию не удалось сериализовать, поскольку она конфликтовала с параллельными изменениями, и она была отменена. Это ожидаемое поведение, защищающее согласованность данных.

Почему возникает?

Транзакции, параллельно обращающиеся к одним и тем же данным, невозможно упорядочить сериализуемым образом, конфликты записи при высокой параллельности или опасные зависимости, обнаруженные SSI (Serializable Snapshot Isolation).

Как исправить

Это не ошибка, а ожидаемый сигнал: повторите транзакцию как есть. Добавьте в приложение логику автоматического повтора. Чтобы сократить конфликты, укорачивайте транзакции и используйте более низкий уровень изоляции (READ COMMITTED), если более высокий действительно не нужен. Проектируйте так, чтобы снизить конкуренцию за горячие строки.

Открыть в DBAtlas →

Ещё по этой СУБД