Sobes.tech
Junior — Middle

Veritabanları hangi yöntemlerle yarış durumu koşullarına karşı koruma sağlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Veritabanlarında yarış koşullarından korunmak için aşağıdaki yöntemler kullanılır:

  • İşlemler ve kilitler: veritabanları, aynı verilerin eşzamanlı değişimini önlemek için satır, sayfa veya tablo seviyesinde kilitler uygular.
  • İşlem izolasyonu: İzolasyon seviyeleri (Read Uncommitted, Read Committed, Repeatable Read, Serializable), işlemler arasındaki değişikliklerin görünürlüğünü düzenler ve çatışma olasılığını azaltır.
  • İyimser kilitleme: verileri güncellerken, okuma sırasında değişip değişmediği kontrol edilir (örneğin, bir sürüm veya zaman damgası kullanılarak). Değişmişse, işlem geri alınır.
  • Kötümser kilitleme: veriler, diğer işlemler tarafından değişiklik yapılmasını önlemek için hemen okunurken kilitlenir.

Sürüm kullanarak iyimser kilitleme örneği:

// Tablo içinde bir Sürüm alanı olduğunu varsayalım
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;

// Veriyi değiştir
entity.Name = "Yeni İsim";

// Kaydederken, sürümün değişmediğini kontrol et
try {
    dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
    // Çatışma yönetimi — veriler başka bir işlem tarafından değiştirildi
}