DBAtlas · Veritabanı operasyon atlası

55P03: lock_not_available

PostgreSQL

Ne demek?

İstenen lock hemen alınamadı. Genellikle NOWAIT ile lock istenip başkasının o lock'u tutması ya da lock_timeout süresinin dolması sonucu oluşur.

Neden olur?

SELECT ... FOR UPDATE NOWAIT veya LOCK TABLE ... NOWAIT kullanımı sırasında satır/tablonun kilitli olması; ya da lock_timeout değerinin dolması. Çoğu zaman lock'u tutan uzun bir transaction vardır.

Nasıl çözülür?

Engelleyen oturumu bulun: pg_locks ve pg_stat_activity'yi birleştirin (waiting/blocking ilişkisi). Uzun transaction'ı bitirin veya gerekirse pg_terminate_backend(pid) ile sonlandırın. NOWAIT yerine makul bir lock_timeout ile bekleyip yeniden deneme mantığı kurun. Transaction'ları kısaltarak lock tutma süresini azaltın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar