Satır sürüm oluşturma tabanlı yalıtım düzeyleri seçme

Satır sürüm oluşturma tabanlı yalıtım düzeyleri, okuma işlemleri için kilitleri ortadan kaldırarak okunur eşzamanlılık geliştirmek.Microsoft SQL Server introduces two transaction isolation levels that use row versioning:

  • Yeni bir satır sürüm oluşturma READ_COMMITTED_SNAPSHOT veritabanı seçeneği on olarak ayarlandığında kullanan okuma kaydedilmiş yalıtım uygulaması.

  • ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği on olarak ayarlandığında, etkin olduğu anlık görüntü görüntüsünü, yeni bir yalıtım düzey.

Çoğu uygulama için kaydedilmiş yalıtım okuma satır sürüm oluşturma'yı kullanarak önerilir anlık görüntü yalıtım aşağıdaki nedenlerle:

  • Daha az tüketir tempdb anlık görüntü yalıtım fazla yer.

  • Anlık görüntü yalıtım'in almadığı dağıtılmış hareketleri ile çalışır.

  • Varolan uygulamaların çoğu ile herhangi bir değişiklik gerektirmeden çalışır.Okuma varsayılan yalıtım düzey kullanılarak yazılmış uygulamaları kabul edilen, dinamik olarak ayarlanmasına.Satır sürüm oluşturma ya da değil, kullanmak için veritabanı seçeneği belirlenir ve bu uygulamanın etkilemeden değiştirilebilir olup olmadığını kaydedilen okuma davranışı.

    Not

    Okuma kaydedilmiş yalıtım engelleyici davranış bağlıdır için tasarlanmış uygulamalar için geliştiricilerin hem okuma kaydedilmiş yalıtım modları ile çalışmak için uygulamayı değiştirmek isteyebilirsiniz.Aksi takdirde, READ_COMMITTED_SNAPSHOT veritabanı seçeneği kapalı kalır dikkate almak önemlidir.

  • Anlık görüntü yalıtım okuma kaydedilmiş yalıtım satır sürüm oluşturma'yı kullanarak ilgili olmayan güncelleştirme çakışmaları savunmasızdır.anlık görüntü yalıtım altında çalışan bir işlem daha sonra başka bir hareket tarafından değiştirilen verileri okur, anlık görüntü görüntü hareketi aynı verilere göre güncelleştirme güncelleştirme çakışması olur ve işlem sona erer ve geri alınır.Bu satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş yalıtım ile ilgili bir sorun değildir.

Okuma kaydedilmiş yalıtım kullanarak satır sürüm oluşturma'yı kullanma

Okuma kaydedilmiş yalıtım kullanarak satır sürüm oluşturma deyim düzey okuma tutarlılık sağlar.Hareketin içindeki her deyimini yürütür gibi yeni bir veri anlık görüntü alınır ve deyim yürütme bitene kadar her deyim için tutarlı kalır.Okuma kaydedilmiş yalıtım satır sürüm oluşturma'yı kullanarak etkinleştirme sırasında:

  • Okuyucu/Yazıcı engelleme noktaya oluşur eşzamanlılık yararlar basmaktadır, oluşturma ve yönetme satır sürümleri yükü artar.

  • Bir uygulama, uzun süredir çalışan toplamalardan veya burada veri değerleri bir sorgu başladığı saat noktasına tutarlı olmalıdır sorguları için mutlak doğruluk gerektirir.

Anlık görüntü yalıtım kullanma zamanı

Anlık görüntü yalıtım hareket düzey okuma tutarlılık sağlar.Anlık görüntü hareket başladığında, veri anlık alınır ve işlem süresi için tutarlı kalır.Anlık görüntü yalıtım kullanın zaman:

  • İyimser eşzamanlılık denetimi istenen.

  • Bir hareket bir güncelleştirme çakışması nedeniyle geri alınması gerekirdi düşük olasılıktır.

  • saat içinde alınmı tutarlılık olması gerekir uzun süre çalışan, multi-deyim sorguları temel alan raporlar üretmek bir uygulama gerekiyor.Anlık görüntü yalıtım yinelenebilir okuma yararı sağlar (bkz: Eşzamanlılık efektleri) kullanmadan paylaşılan kilitleri.Veritabanı anlık görüntü benzer bir işlevsellik sağlar, ancak el ile uygulanması gerekir.Anlık görüntü yalıtım her anlık görüntü yalıtım hareket veritabanında bulunan en son bilgileri otomatik olarak sağlar.

Satır sürüm oluşturma tabanlı yalıtım düzeyleri yararları

Satır sürüm oluşturma kullanın yalıtım düzeyleri aşağıdaki yararları sağlar:

  • Okuma işlemleri almak tutarlı bir anlık görüntü veritabanı.

  • select deyimleri kilit veri okuma işlemi sırasında (okuyucuları yapmak değil blok yazarlar, veya tam tersi).

  • Diğer hareketleri engellenmiş olmadan satır güncelleştirdiğiniz sırada select deyimleri satır son kaydedilmiş değerini erişebilirsiniz.

  • Tıkanma sayısı azalır.

  • Yükü kilitlerini yönetmek için gereken sistem azaltır, bir işlem tarafından gereken kilit sayısı azalır.

  • Daha az kilit escalations gerçekleşir.

Satır yalıtım düzeyleri Versioning tabanlı maliyetleri

Satır sürüm oluşturma tabanlı yalıtım kullanmaya karar vermeden kilitleme karşı korumak ve satır sürümleri okumak için gereken yüksek kaynak kullanımı en aza indirme eşzamanlılık yararı ağırdı gerektirir.Anlık görüntü ve okuma kaydedilmiş yalıtım düzeyleri için satır sürüm oluşturma'yı etkinleştirme ile ilgili aşağıdaki maliyetlerin göz önünde bulundurun:

  • Sürümleri tarafından sorguları zincirlerini taranan eski ve uzun sürüm olduğunda, okuma performansı etkilenebilir.

  • Satır sürüm oluşturma satır sürümleri içinde korunur gibi bu kaynak kullanımı sırasında veri değişikliği artırır tempdb.

  • Satır sürüm oluşturma tabanlı yalıtım düzey kullanarak hiçbir hareket olduğunda bile ne zaman seçenekleri bulunan READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION veritabanı güncelleştirme ve silme işlemleri belirli bir veritabanı için satır sürümleri tutmalıdır.Satır sürümleri kullanarak verilerin tutarlı bir anlık görüntü oluşturmak yoluyla sistem kaynaklarını (cpu ve bellek) içerir ve potansiyel g/Ç etkinliği oluşturur.Kayıt sürümlerini depolanır çünkü tempdb, daha iyi performans ve verilen g/Ç sayısı daha fazla zaman daha düşük tempdb sayfaları, satır sürüm oluşturma için bellekte saklanabilir.

    Not

    Genellikle bir satır ekleme satırı sürüm oluşturmaz.Belirli koşullar altında ancak satır sürüm Ekle komutunu oluşturun.Örneğin bir satıra eklemek, bir tablo daha önce silinen satır sürüm (hayalet kayıt) kesildi olduğunda, satır sürüm Ekle komutunu ile benzersiz dizin oluşturur.

  • tempdb sürüm deposu için yeterli disk alanınız olması gerekir.Çok uzun süren işlemler varsa, tüm sürümlerini güncelleştirme işlemleri sırasında tarafından üretilen saat tutulması gerekir tempdb.If tempdb runs out of space, update operations do not fail, but read operations using row versioning might fail.

  • Satır sürüm oluşturma bilgilerini veritabanı satırı için eklenen 14 bayt gerektirir.

  • Güncelleştirme performansını satır sürümleri bakımıyla ilgili iş yüzünden daha yavaş olabilir.Tipik oltp iş yükleri bir veritabanında yalnızca birkaç satır her güncelleştirme değiştirir.Bu sistemleri, performans güncelleştirmeleri seçenekleri açık olduğu bir veritabanındaki veritabanları için iki seçenek karşılaştırıldığında yalnızca birkaç yüzde noktalarını daha yavaş olabilir.Güncelleştirme işlemleri sırasında daha büyük miktarda veriyi değiştirdiğinizde, sürüm bilgisi güncelleştirmeleri performans maliyeti daha yüksek olabilir.

  • Veri okuyucuları yüz sürüm bağlantı listesinde geçiş yapma ekstra maliyet.Eski anlık görüntü, bir anlık görüntü yalıtım hareket içinde erişim yavaş süreci.

  • Anlık görüntü yalıtım kullanarak bazı güncelleştirme hareketleri güncelleştirme işlemleri için zorunlu çakışma algılama nedeniyle geri alınması gerekebilir.Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş yalıtım altında çalışan hareketleri güncelleştirme çakışması oluşturur.

Satır sürüm oluşturma'yı kullanarak hareketleri diğer sınırlamalara sahiptir.Daha fazla bilgi için bkz: Satır sürüm oluşturma tabanlı yalıtım düzeyleri kullanma.

Satır sürüm oluşturma tabanlı yalıtım düzeyleri fayda sistemleri

Satır sürüm oluşturma tabanlı yalıtım düzeylerinden yararlanır senaryolar aşağıdakileri içerir:

  • Salt okunur raporları ve ad hoc sorguları paralel bir uygulama veri güncelleştirme ile çalıştığı sistemler.

  • Application migration to the Microsoft SQL Server Veritabanı Altyapısı from other relational database systems supporting similar isolation levels.

  • Hangi sum, avg ve count gibi tutarlı toplamları alınıyor veya dizin kesişmeler ve dizin gerçekleştirme birleşimler, duyar bir kesin yalıtım düzey (örneğin yinelenebilir okuma veya seri hale getirilebilir) sistemleri.

  • Okuma/yazma çekişme nedeniyle yüksek bir kilitlenme sayısına sahip sistemler.