EMZETT.
Giriş yap

İyimser ve kötümser kilitleme

Kısaca: Kötümser kilitlemede veriler değiştirilmeden önce kilitlenir; iyimser kilitlemede kaydederken arada başkasının bir şey değiştirip değiştirmediği denetlenir.

Biraz daha ayrıntılı: İki yöntem de, iki kişinin aynı kaydı düzenlediği ve ikinci kaydetmenin birincinin üzerine yazdığı “kayıp güncellemeleri” önler.

Ayrıntılı

  • Kötümser: SELECT ... FOR UPDATE, işlem bitene kadar satırı kilitler. Yüksek çatışmada güvenlidir, ama diğerleri beklemek zorundadır ve kilitlenme (deadlock) tehlikesi vardır.
  • İyimser: Satırın bir sürüm numarası (veya zaman damgası) vardır. Kaydederken: UPDATE ... SET ..., version = version + 1 WHERE id = ? AND version = ?. 0 satır değiştiyse başkası kaydetmiştir ve yeniden yüklemek veya birleştirmek gerekir.
  • Web: Kullanıcı bir formu okur ve dakikalar sonra kaydeder. Uzun kilitler pratik değildir; bu yüzden iyimser yaygındır (HTTP’de ETag ve If-Match).
  • Seçim: Nadir çatışma → iyimser; aynı veride sık çatışma (stok, hesap bakiyesi) → kötümser veya atomik güncellemeler (SET stok = stok - 1).
  • Bağlam: Bkz. MVCC ve yalıtım düzeyleri.

Ayrıca bak: İşlemler ve ACID