Paralel əməliyyatlar zamanı hansı anomaliyalar baş verə bilər?
sobes.tech Süni İntellekt
AI-dan cavab
Eyni zamanda tranzaksiyaların icrası zamanı aşağıdakı anomaliyalar baş verə bilər:
-
Itirilmiş Yeniləmə (Lost Update): Bir tranzaksiya digərinin dəyişikliklərini qeydiyyata almadan əvvəl yeniləyir.
Vaxt Tranzaksiya 1 Tranzaksiya 2 t1 Balans dəyərini oxuyur (məsələn, 100) t2 Balans dəyərini oxuyur (məsələn, 100) t3 Balansı 10 artırır (Balans = 110) t4 Balansı 20 artırır (Balans = 120) t5 Dəyişiklikləri təsdiqləyir (Balans 110 olur) t6 Dəyişiklikləri təsdiqləyir (Balans 120 olur) Nəticə: İki artımdan sonra, son Balans dəyəri 120 olur, 130 deyil. Birinci tranzaksiyanın artımı itirilib.
-
Qarışıq oxuma (Dirty Read): Bir tranzaksiya digərinin təsdiqlənməmiş dəyişikliklərini oxuyur. Əgər dəyişiklik edən tranzaksiya geri alınsa, oxunan məlumatlar etibarsız olacaq.
Vaxt Tranzaksiya 1 Tranzaksiya 2 t1 Balansı dəyişir (100 -> 110) t2 Balansı oxuyur (110 alır) t3 Dəyişikliyi geri alır (Balans 100-ə qayıdır) t4 Balansı 110 kimi istifadə edir, halbuki əsl dəyər 100-dir Nəticə: Tranzaksiya 2, yekun olaraq təsdiqlənməyən məlumatlara əsaslanır.
-
Təkrarlanmayan oxuma (Non-Repeatable Read): Eyni tranzaksiya daxilində eyni sətiri təkrar oxuyarkən fərqli dəyərlər alınır, çünki başqa bir tranzaksiya həmin sətirdə dəyişiklik edib və təsdiqləyib.
Vaxt Tranzaksiya 1 Tranzaksiya 2 t1 Balansı oxuyur (100 alır) t2 Balansı 110-ə dəyişir və təsdiqləyir t3 Yenidən oxuyur (110 alır, əvvəlki 100 deyil) Nəticə: Balans eyni tranzaksiya daxilində dəyişib, bu isə düzgün olmayan nəticələrə səbəb ola bilər.
-
Fantom oxuma (Phantom Read): Təkrarlanan oxuma kimi görünür, amma burada mövcud sətirlərin dəyişdirilməsi deyil, yeni sətirlərin əlavə olunması və ya silinməsi ilə əlaqədardır və bu, sorğunun nəticələrinə təsir edir.
Vaxt Tranzaksiya 1 Tranzaksiya 2 t1 SELECT COUNT(*) FROM Orders WHERE Status = 'Pending'sorğusunu icra edir (5 alır)t2 Yeni 'Pending' statuslu sifariş əlavə edir və təsdiqləyir t3 Yenidən SELECT COUNT(*) FROM Orders WHERE Status = 'Pending'icra edir (6 alır)Nəticə: Təkrarlanan sorğu icrası zamanı "fantom" sətirlər görünür, ilk oxuma zamanı yox idi.
Bu anomaliyaların qarşısını almaq üçün müxtəlif tranzaksiya izolyasiya səviyyələrindən istifadə olunur.