- Kirli okumalar : başka bir işlemden UNCOMMITED verilerini okuma
- Tekrarlanamayan okumalar :
UPDATE
başka bir işlemdengelen birsorgudanCOMMITTED verileri okuyun
- Fantom okur : Bir den İŞLENEN veri okumak
INSERT
veyaDELETE
başka işlemden sorgusu
Not : Başka bir işlemden DELETE ifadeleri, bazı durumlarda tekrarlanamayan okumalara neden olma olasılığı da çok düşüktür. Ne yazık ki DELETE deyimi, geçerli işleminizin sorguladığı satırın aynısını kaldırdığında olur. Ancak bu nadir bir durumdur ve her tabloda milyonlarca satır bulunan bir veritabanında meydana gelme olasılığı daha düşüktür. İşlem verilerini içeren tablolar genellikle herhangi bir üretim ortamında yüksek veri hacmine sahiptir.
Ayrıca, GÜNCELLEMELER'in gerçek INSERT veya DELETES yerine çoğu kullanım durumunda daha sık bir iş olabileceğini gözlemleyebiliriz (bu gibi durumlarda tekrarlanamayan okuma tehlikesi sadece kalır - bu durumlarda fantom okumaları mümkün değildir). Bu nedenle GÜNCELLEŞTİRMELER INSERT-DELETE'den farklı şekilde ele alınır ve ortaya çıkan anomali de farklı adlandırılır.
Ayrıca, yalnızca GÜNCELLEMELERİ işlemek yerine INSERT-DELETE'lerin işlenmesi ile ilişkili ek bir işlem maliyeti vardır.
- READ_UNCOMMITTED hiçbir şeyi engellemiyor. Sıfır izolasyon seviyesidir
- READ_COMMITTED yalnızca birini önler, yani Kirli okumalar
- REPEATABLE_READ iki anormalliği önler: Kirli okumalar ve tekrarlanamayan okumalar
- SERIALIZABLE üç anormalliği de önler: Kirli okumalar, tekrarlanamayan okumalar ve Phantom okumaları
O zaman neden sadece her zaman SERIALIZABLE işlemini ayarlamıyorsunuz? Yukarıdaki sorunun cevabı şudur: SERİLEŞTİRİLEBİLİR ayar işlemleri çok yavaş yapar , bu da yine istemiyoruz.
Aslında işlem süresi tüketimi aşağıdaki orandadır:
SERIALIZABLE > REPEATABLE_READ > READ_COMMITTED > READ_UNCOMMITTED
Bu nedenle READ_UNCOMMITTED ayarı en hızlısıdır .
özet
Aslında işlem vakasını analiz etmemiz ve bir izolasyon seviyesine karar vermemiz gerekiyor, böylece işlem süresini optimize ediyoruz ve çoğu anormalliği önlüyoruz.
Veritabanlarının varsayılan olarak REPEATABLE_READ ayarına sahip olduğunu unutmayın.