DBAtlas · Atlas d'exploitation des bases de données

40001: serialization_failure

PostgreSQL

Que signifie cette erreur ?

Sous le niveau d'isolation SERIALIZABLE ou REPEATABLE READ, la transaction n'a pas pu être sérialisée, car elle est entrée en conflit avec des modifications concurrentes, et elle a été annulée. C'est un comportement attendu qui protège la cohérence des données.

Cause

Transactions accédant simultanément aux mêmes données ne pouvant pas être ordonnées de façon sérialisable, conflits d'écriture sous forte concurrence, ou dépendances dangereuses détectées par SSI (Serializable Snapshot Isolation).

Comment la corriger

Ce n'est pas un bogue mais un signal attendu : relancez la transaction telle quelle. Ajoutez une logique de relance automatique dans l'application. Pour réduire les conflits, raccourcissez les transactions et utilisez un niveau d'isolation inférieur (READ COMMITTED) s'il n'est pas réellement nécessaire. Concevez de façon à réduire la contention sur les lignes chaudes.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur