PostgreSQL Deadlock İncelemesi

Deadlock hatalarını işlem sırası ve sorgu bağlamıyla çözümleyin. Hata tekrarını sürekli izleyip kök nedeni bulun.

2026-09-09 · 2 dakika okuma

Problem neden önemlidir?

Deadlock, işlemlerin birbirinin tuttuğu kilitleri döngüsel biçimde beklemesiyle oluşur. PostgreSQL işlemlerden birini iptal eder, ancak uygulama hatayı doğru ele almazsa kullanıcı etkisi sürer.

Nasıl teşhis edilir?

pg_stat_database.deadlocks sayacını günlüklerdeki deadlock ayrıntıları ve uygulama işlem akışıyla ilişkilendirin. Sayaç hangi tabloların veya ifadelerin döngüyü oluşturduğunu tek başına göstermez.

Sorgu veritabanı başına kümülatif deadlock sayısını gösterir. Kök neden analizi için günlük ayrıntıları ve sayaç farkları ayrıca gereklidir.

SELECT datname, deadlocks, stats_reset
FROM pg_stat_database
WHERE datname IS NOT NULL
ORDER BY deadlocks DESC;

Güvenli çözüm yaklaşımı

İşlemlerin nesnelere aynı sırada erişmesini sağlayın ve açık işlem kapsamını küçültün. Uygulama yeniden denemelerini sınırlı, gecikmeli ve yalnızca güvenli işlemler için tasarlayın.

Sürekli monitoring neden gerekir?

moon, deadlock sayacı değişimlerini düşük ek yükle sürekli izlemeye yardımcı olur. Slack, PagerDuty veya webhook uyarıları yeni tekrarları uygulama ekibine aktarabilir.

Sık sorulan sorular

deadlocks = 0 mevcut deadlock riski olmadığını gösterir mi?

Hayır, sayaç yalnızca gözlem ve sıfırlama döneminde algılanan olayları gösterir. Yeni kod yolları ve eşzamanlılık değişimleri gelecekte deadlock üretebilir.

moon bu konuda nasıl yardımcı olur?

moon, SQL Server, PostgreSQL ve MongoDB sinyallerini sürekli izleyerek problemi anlık bir kontrolden ziyade zaman içindeki davranışıyla değerlendirmeye yardımcı olur.