Transaction Isolation Levels (TIL) paralel tranzaksiyaların idarə olunmasında mühüm rol oynayır. Belə ki, məlumatların ardıcıllığı, paralelliyi və izolyasıyasını təmin edərək proqramçılara tələblərə uyğun servislərin yazılmasını təmin edir. Bu səviyyələrə ehtiyac duymasının səbəbləri aşağdakılardır:
- Data Consistency — TIL tranzaksiya ilə məlumat ardıcıllığını təmin edir, hansı ki, bir tranzaksiyanın etdiyi dəyişikliklərin digər paralel tranzaksıyaların necə göründüyünə nəzarət edir. Müvafiq səviyyəsini seçməklə, tranzaksiya ilə əldə edilən və dəyişdirilən məlumatların ardıcıl olmasını və verilənlər bazasının etibarlı vəziyyətini əks etdirməsini təmin edir.
- Concurrency Control — TIL verilənlər bazasında tranzaksiya paralelliyini idarə etməyə imkan verir, belə ki, müvafiq səviyyəni seçməklə siz verilənlərə eyni vaxtda daxil olmaq ehtiyacını, məlumatların bütövlüyü və ardıcıllığının qorunması tələblərini balanslaşdıra bilir.
- Performance Optimization — TIL verilənlər bazasının performansına təsir göstərə bilər. Misal üçün, Serializable kimi yüksək səviyyələr daha çox lock və paralelliyi azaldaraq müyyən performans yüksəlmələrini təmin edə bilər.
- Data Integrity — TIL paralel əməliyyatlarda baş verə biləcək müəyyən növ anomaliyaların qarşısını almaqla məlumatların bütövlüyünü qorumağa kömək edir.
İndi isə EF Core ilə bu səviyyələrin idarə olunmasına baxaq. EF Core System.Data namespace — də yerləşən IsolationLevel enumeration istifadə edərək TIL səviyyələrinə nəzarətetməni təmin edir.
EF Core-da mövcud TIL səviyyələri aşağıdakılardır:
- ReadUncommitted — Bu səviyyə tranzaksiyaya digər paralel tranzaksiyalar tərəfindən təhvil verilməmiş məlumatları oxumağa imkan verir. Bu, ən yüksək səviyyədə paralelliyi təmin edir.
- ReadCommitted — Bu EF Core-da default səviyyədir, belə ki bir tranzaksiya paralel tranzaksiyaların yalnız commit olunmuş dəyişikliklərini görə bilər.
- RepeatableRead — Bu səviyyə proqramçıya əməliyyatı icra etməzdən əvvəl commit olunmuş məlumatların əldə olunmasını təmin edir.
- Serializable — Bu səviyyə əməliyyatların bir-birindən tamamilə təcrid olunmasını təmin edir.
- Snapshot — Bu səviyyə lock-ların qarşısını almaq üçün row versioning istifadə edir və paralelliyə mane olmadan ardıcıllıq təmin edir.
- https://www.bytehide.com/blog/transactions-ef-core
- https://learn.microsoft.com/en-us/dotnet/api/system.transactions.isolationlevel?view=net-7.0
- https://kihtov23.medium.com/data-consistency-in-entity-framework-core-c47e30332220
Diqqətiniz üçün təşəkkürlər!