Oracle kökenli olup şimdi SQL Server yöneten ya da SQL Server da yöneten DBA'ler SQL Server 2005'le gelen bu iki özelliğe bayılacak.
 
READ_COMMITTED_SNAPSHOT bir veritabanı opsiyonu. Seçilince tüm veritabanında geçerli oluyor. Veritabanında çalışan SELECT'lerin paylaşılan kilit koymamasını, bunun yerine çalıştırıldıkları andaki satır bilgilerini satır versiyonlarına güvenerek okumasını sağlıyor.
 
SELECT'ler paylaşılan kilit koymadıkları için UPDATE'ler onları beklemek zorunda kalmıyor. SELECT'ler de okudukları datanın tutarlı olması için değiştirilmiş satırların kendileri başladığı handaki orijinal halini okuyorlar. Performans açısından hoş, ama bence daha önemlisi, Oracle kökenli DBA ya da programcıların alışık olduğu bir davranış modelini SQL Server tarafında gerçeklemesi.
 
SNAPSHOT ISOLATION da aynı çalışma şeklini transaction bazında getiriyor. Transaction isolation levelını böyle seçerseniz, ilgili transaction içinde SELECT'lerin davranışı tarif ettiğim şekilde gerçekleşiyor.
 
Oracle kökenliler konuyu hemen anlamıştır. SQL Server kökenli olup konuyu karışık bulanlar daha detaylı açıklama isterlerse yorum ekleyerek sorularını sorabilirler.
 
Not: SNAPSHOT ISOLATION kullandığınızda, SELECT'lerin gördüğü veri versiyonu kendilerinin çalıştırıldıkları an değil, transactionın ilk başladığı andır.
 
Kategori bazlı olarak tüm yazılarımı içeren blog'um için:
http://mustafaacungil.spaces.live.com