Sobes.tech
Middle

Verilənlər bazalarında tranzaksiya izolasiya səviyyələrini bilirsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

SQL standartında dörd izolyasiya səviyyəsi müəyyən edilmişdir: Read Uncommitted, Read Committed, Repeatable Read, Serializable.

  1. Read Uncommitted: Ən aşağı səviyyə. Bir əməliyyat hələ təsdiqlənməmiş (yəni, başqa bir əməliyyat tərəfindən yerinə yetirilmiş və hələ COMMIT edilməmiş) məlumatları oxuya bilər. Bu, "çirkli" oxumalara (dirty reads) səbəb olur.

  2. Read Committed: Əməliyyat yalnız onun başlamasından əvvəl və ya zamanı təsdiqlənmiş məlumatları görür. "Çirkli" oxumaları qarşısını alır, lakin təkrarlanmayan oxumaları (non-repeatable reads) və fantom oxumaları (phantom reads) icazə verir.

    • Təkrarlanmayan oxumalar: Eyni əməliyyat daxilində eyni oxuma müxtəlif məlumatlar qaytara bilər, çünki başqa bir əməliyyat onları dəyişib və təsdiqləyib.
    • Fantomlar: WHERE şərti ilə sorğu icra edilərkən, ikinci əməliyyat şərti ödəyən sətirləri əlavə edir və ya silir, və ilk əməliyyatda eyni sorğu yenidən icra edildikdə fərqli sətir dəstini qaytarır.
  3. Repeatable Read: Əməliyyat yalnız onun başlamasından əvvəl təsdiqlənmiş məlumatları görür. Eyni sətirlərin təkrarlanan oxumaları eyni məlumatları qaytarır. "Çirkli" və təkrarlanmayan oxumaları qarşısını alır. Fantomlara icazə verir.

    // Repeatable Read nümunəsi
    // Əməliyyat 1
    // BEGIN TRANSACTION;
    // SELECT COUNT(*) FROM users WHERE status = 'active'; // Məsələn, 100
    
    // Əməliyyat 2 (eyni zamanda işləyir)
    // BEGIN TRANSACTION;
    // INSERT INTO users (name, status) VALUES ('Yeni istifadəçi', 'active');
    // COMMIT;
    
    // Əməliyyat 1
    // SELECT COUNT(*) FROM users WHERE status = 'active'; // Hələ də 100 (fantom)
    // COMMIT;
    
  4. Serializable: Ən yüksək izolyasiya səviyyəsi. Paralel əməliyyatların, müəyyən bir ardıcıllıqla icra olunmuş kimi davranmasını təmin edir. "Çirkli" oxumaları, təkrarlanmayan oxumaları və fantomları qarşısını alır. Bloklamalar səbəbindən performans aşağı düşə bilər.

Fərqli DBMS-lərdə, izolyasiya səviyyələrinin özünəməxsus tətbiqləri və xüsusiyyətləri ola bilər, həmçinin əlavə səviyyələr də mövcuddur. Məsələn, MySQL InnoDB-də, standart Repeatable Read-dir.