Eşzamanlılık ve izolasyon
Isolation, RCSI ve snapshot
Hangi tutarlılığı istediğini tanımla.
Kavramı anlayalım
READ UNCOMMITTED dirty read’e izin verir. Lock tabanlı READ COMMITTED commit edilmemiş değişikliği okumaz ama iki sorgu arasında veri değişebilir. REPEATABLE READ okunan satırları korur; SERIALIZABLE aralıkları da koruyarak phantom riskini sınırlar. Daha güçlü izolasyon daha fazla bekleme yaratabilir.
READ_COMMITTED_SNAPSHOT açıkken READ COMMITTED, statement seviyesinde sürüm görünümü kullanır. SNAPSHOT transaction seviyesinde tutarlı sürüm sağlar ve önceden izin verilmiş olmalıdır; update conflict oluşabilir. Row versioning “sıfır kilit” veya “sıfır maliyet” değildir. Sürüm deposu ve uzun okuma işlemleri izlenir. Veritabanı ayarını bu ders değiştirmez; DBA değerlendirmesi gerekir. Oturum seviyesini örnek sonunda geri al.
İşlem senaryosuna uygun tutarlılık seçmek için.
RCSI ile SNAPSHOT’ın aynı kapsamda olduğunu sanmak.
Aynı konu. Üç farklı derinlik.
DBCC USEROPTIONS;Oturum ayarlarını görüntüler.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Ayar değiştirmeden mevcut veritabanının RCSI durumunu öğren.
Çözümü ve açıklamasını göster
SELECT name, is_read_committed_snapshot_on FROM sys.databases WHERE name = DB_NAME();1 RCSI açık, 0 kapalı anlamına gelir; kendiliğinden açma.