ScholarGate
Asistan

İzolasyon Seviyeleri

İzolasyon seviyeleri, bir işlemin diğer eşzamanlı işlemlerin etkilerinden ne kadar korunduğunu tanımlamaktadır; bu seviyeler, daha yüksek eşzamanlılık ve verim karşılığında bazı izolasyon garantilerinden ödün vermektedir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Bir izolasyon seviyesi, bir işlemin hangi eşzamanlılık anormalliklerini gözlemleyebileceğinin bir spesifikasyonudur; daha yüksek seviyeler, daha az eşzamanlılık maliyetiyle daha fazla anormalliği (tam serializability'ye kadar) önlerken, daha düşük seviyeler performans karşılığında belirli anormalliklere izin vermektedir.

Kapsam

Bu konu, standart izolasyon seviyelerini — read uncommitted, read committed, repeatable read ve serializable — ele almaktadır. Bu seviyeler, her birinin izin verdiği veya engellediği fenomenler (dirty read, non-repeatable read, phantom) açısından tanımlanmaktadır. Ayrıca, bu seviyeleri izin verilen anormallikler açısından yeniden çerçeveleyen etkili eleştiri ve pratik açıdan önemli olan snapshot isolation ile write skew gibi anormallikleri de kapsamaktadır. Tutarlılık ve eşzamanlılık arasındaki dengeyi incelemektedir. Bu seviyeleri uygulayan temel kilitleme ve çoklu sürüm mekanizmaları bu kapsamın dışındadır.

Temel sorular

  • Her bir izolasyon seviyesi hangi anormalliklere — dirty read, non-repeatable read, phantom — izin vermektedir?
  • SQL standardı dört izolasyon seviyesini nasıl tanımlamaktadır?
  • Araştırmacılar, anormallik tabanlı tanımlamaları neden belirsiz olarak eleştirmişlerdir?
  • Snapshot isolation nerede konumlanmaktadır ve hangi anormalliklere (write skew gibi) izin verebilmektedir?
  • Uygulamalar, belirli bir iş yükü için izolasyon seviyesini nasıl seçmektedir?

Anahtar kavramlar

  • read uncommitted
  • read committed
  • repeatable read
  • serializable
  • dirty read
  • non-repeatable read
  • phantom read
  • snapshot isolation ve write skew

Temel kuramlar

Anormallik Tabanlı İzolasyon Seviyeleri
SQL standardı, izolasyon seviyelerini izin verdikleri üç fenomen (dirty reads, non-repeatable reads ve phantoms) aracılığıyla tanımlamaktadır; bu seviyeler read uncommitted'dan (hepsine izin verilir) serializable'a (hiçbirine izin verilmez) kadar değişmektedir.
ANSI İzolasyon Seviyelerinin Eleştirisi
Berenson ve meslektaşları, standardın fenomen tabanlı tanımlarının belirsiz olduğunu ve çoklu sürüm sistemlerini net bir şekilde karakterize etmediğini göstermişlerdir; ayrıca, orijinal tanımlar tarafından kapsanmayan, ayrı ve yaygın olarak uygulanan bir seviye olarak snapshot isolation'ı tanıtmışlardır.
Snapshot Isolation ve Anormallikleri
Snapshot isolation altında her işlem, başlangıcındaki tutarlı bir anlık görüntüyü okumaktadır; bu, okuma kilitleri olmaksızın güçlü okuma davranışı sağlamaktadır, ancak write skew gibi serializable olmayan anormalliklere izin verebilmektedir, bu da serializable snapshot isolation'ı motive etmektedir.

Klinik önem

İzolasyon seviyesi, uygulama geliştiricileri için rutin ancak önemli bir yapılandırma seçimidir: çok zayıf bir seviye seçmek, hassas anormallikler aracılığıyla verileri sessizce bozabilmektedir; her zaman serializable kullanmak ise verimi düşürebilmektedir. Bu nedenle, doğru ve yüksek performanslı işlemsel uygulamalar için seviyeleri anlamak esastır.

Tarihçe

ANSI/ISO SQL standardı, izolasyon seviyelerini izin verilen fenomenler açısından tanımlamıştır. Berenson, Bernstein, Gray ve O'Neils tarafından 1995 yılında yapılan eleştiri, bu tanımlardaki belirsizlikleri ortaya koymuş ve ana akım çoklu sürüm veritabanlarının benimsediği snapshot isolation'ı karakterize etmiştir. Daha sonraki çalışmalar, kalan anormallik boşluğunu kapatmak için serializable snapshot isolation'ı tanımlamıştır.

Tartışmalar

İzolasyonu Anormalliklere Karşı Serializable Olma Durumuna Göre Tanımlama
Standardın anormallik listesi tanımları kolayca ifade edilebilir ancak belirsizdir ve çoklu sürüm sistemlerine uymamaktadır; bir alternatif, doğruluğu doğrudan serializability aracılığıyla tanımlamaktır ki bu daha net olmakla birlikte, geliştiricilerin pratikte yapılandırdığı seviyelere eşleştirmesi daha zordur.

Öne çıkan isimler

  • Jim Gray
  • Philip Bernstein
  • Hal Berenson

İlgili konular

Temel eserler

  • berenson1995
  • gray1992

Sıkça sorulan sorular

Non-repeatable read ile phantom read arasındaki fark nedir?
Non-repeatable read, bir işlem aynı satırı iki kez okuduğunda ve arada başka bir işlem tarafından güncellendiği için farklı değerler gördüğünde meydana gelmektedir. Phantom read ise, bir işlem arama koşuluyla bir sorguyu yeniden çalıştırdığında ve başka bir işlem tarafından eklenen yeni satırları gördüğünde ortaya çıkmaktadır. Repeatable read ilkini önlerken; yalnızca serializable, phantom'ları güvenilir bir şekilde önlemektedir.
Snapshot isolation, serializable ile aynı mıdır?
Hayır. Snapshot isolation, her işleme tutarlı bir anlık görüntü sağlamakta ve dirty ile non-repeatable read'leri önlemektedir, ancak tam olarak serializable değildir: iki işlemin çakışan verileri okuyup birlikte bir kısıtlamayı ihlal eden ayrı güncellemeler yaptığı write-skew anormalliklerine izin verebilmektedir. Serializable snapshot isolation, bu tür anormallikleri ortadan kaldırmak için onu genişletmektedir.

Bu kavram için yöntemler

İlgili kavramlar