40001: serialization_failure
PostgreSQLNe demek?
SERIALIZABLE ya da REPEATABLE READ izolasyon seviyesinde, transaction eşzamanlı değişikliklerle çakıştığı için seri hale getirilemedi ve iptal edildi. Veri tutarlılığını korumak için beklenen bir durumdur.
Neden olur?
Aynı verilere eşzamanlı erişen işlemlerin serileştirilebilir bir sıraya oturtulamaması, yüksek eşzamanlılık altında yazma çakışmaları veya SSI (Serializable Snapshot Isolation) tarafından tespit edilen tehlikeli bağımlılıklar.
Nasıl çözülür?
Bu bir hata değil, beklenen bir sinyaldir: işlemi olduğu gibi yeniden deneyin (retry). Uygulamaya otomatik yeniden deneme mantığı ekleyin. Çakışmaları azaltmak için transaction'ları kısaltın ve gerçekten gerekmiyorsa daha düşük izolasyon (READ COMMITTED) kullanın. Hot row'larda çekişmeyi azaltacak tasarım yapın.