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
}