Junior — Middle
Milyen adatbázis módszerek biztosítanak védelmet a versenyhelyzetek ellen?
sobes.tech MI
Válasz az MI-től
Az adatbázisokban a versenyhelyzetek elleni védelem érdekében a következő módszereket alkalmazzák:
- Tranzakciók és zárolások: az adatbázisok zárolásokat alkalmaznak sor-, oldal vagy tábla szinten, hogy megakadályozzák ugyanazon adatok egyidejű módosítását.
- Tranzakciók izolációja: az izolációs szintek (Read Uncommitted, Read Committed, Repeatable Read, Serializable) szabályozzák a változások láthatóságát a tranzakciók között, csökkentve a konfliktusok valószínűségét.
- Optimista zárolás: az adatok frissítésekor ellenőrzik, hogy azokat az olvasás óta nem változtatták-e meg (például verzió vagy időbélyeg segítségével). Ha változtak, az művelet visszavonásra kerül.
- Peszimista zárolás: az adatokat az olvasás során azonnal zárolják, hogy megakadályozzák más tranzakciók által történő módosításokat.
Az optimista zárolás példája verzió használatával:
// Tegyük fel, hogy van egy Version mező a táblában
var entity = dbContext.Entities.Find(id);
var currentVersion = entity.Version;
// Adatok módosítása
entity.Name = "Új Név";
// Mentéskor ellenőrizze, hogy a verzió nem változott-e
try {
dbContext.SaveChanges();
} catch (DbUpdateConcurrencyException) {
// Konfliktus kezelése — az adatokat egy másik folyamat módosította
}