Aracılığıyla paylaş


Satır Güncelleştirme-based yalıtım düzeyleri anlama

Satır sürümü genel yapıdır SQL Server Bu, aşağıdaki işlemleri yapmak için kullanılır:

  • Yapı eklenen and silindi tablolarda tetikler.Tetikleyici tarafından değiştirilen tüm satırlar, sürümü belirlenmiş olan.Bu tarafından değiştirilen satırları içerir deyim, tetikleyici yanı sıra, veri değişiklikleri tetikleyicisi ile yapılan başlattı.

  • Birden çok Active sonuç kümesi (MARS) destekler.Bir MARS oturum, (INSERT, UPDATE veya DELETE gibi) bir veri değişikliği deyim en sorunları, bir saat bir etkin bir sonuç kümetur, bu değişiklik beyannamenin etkilenen satırların sürüm bilgisi olur.

  • ONLINE seçeneği belirten Dizin işlemleri desteklemiyor.

  • Satır sürümü temelli hareket izolasyon düzeyleri destekler:

    • Yeni bir uygulama okuma, kabul edilen satır sürüm Düzey Ekstresi tutarlılık okuma sağlamak için kullandığı bir yalıtım düzeyi.

    • anlık görüntü görüntü görüntüsünü işlem düzeyinde okuma tutarlılık sağlamak için yeni BIR yalıtım düzey.

The tempdb database must have enough space for the sürüm store.Ne zaman tempdb dolu, güncelleştirme işlemlerini sürümleri oluşturulmasını durdurmak ve başarılı olması, devam etmek, ancak okuma işlemleri başarısız olabilir, belirli bir satır nedeniyle artık gerekli olmayan bir sürüm.Bu tetikleyici, MARS ve çevrimiçi olarak dizin oluşturma gibi işlemleri de etkiler.Daha fazla bilgi için bkz:Satır güncelleştirme kaynak kullanımı.

Okundu olarak kaydedilmiş ve anlık görüntü hareketlerinde satır sürümü kullanarak iki adımlı bir işlemdir:

  1. küme birini veya her ikisini, ON READ_COMMITTED_SNAPSHOT ve ALLOW_SNAPSHOT_ISOLATION veritabanı seçenekleri.

  2. küme uygulamada uygun hareket yalıtım düzey:

    • Okundu olarak kaydedilmiş yalıtım düzey ayarlama hareketleri, READ_COMMITTED_SNAPSHOT veritabanı seçeneği AÇıK olduğunda, satır sürümü kullanın.

    • ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği AÇıK olduğunda, hareketler için küme anlık yalıtım düzey.

READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION veritabanı küme ON, olduğu zaman SQL Server Database Engine bir hareketin sıra numarası (XSN) satır sürüm oluşturmayı kullanarak verileri işleyen her hareket için atar. Saat hareketleri başlatmak saat bir BEGIN TRANSACTION deyim yürütüldüğünde.Ancak, ilk ile işlem sırası numarası başlatır, okuma veya yazma işlemi sonra BEGIN TRANSACTION deyim.Işlem sırası numarası bir artırılır atanmış olan her saat.

READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION veritabanı seçenekleri AÇıK olduğunda, mantıksal kopyalar (sürümler) veritabanında yapılan tüm veri değişiklikleri için korunur.Her satır, örnek gibi belirli bir işlem tarafından da düzeltilir Database Engine bir resmi satır daha önce kaydedilmiş sürüm saklar. tempdb.Her sürüm, değişikliği yapan hareketin hareket sıra numarası ile işaretlenir.Değiştirilen satırları sürümleri bağlantı listesini kullanarak zincirleme.En yeni satır değeri her zaman geçerli veritabanında depolanan ve sürüm bilgisi satırlara depolanan zincirleme tempdb.

Not

Büyük nesneler (LOB'lar) değiştirilmesi için yalnızca değişen parçası Sürüm deposundaki kopyalanır tempdb.

Satır sürümlerinde satır sürüm tabanlı bir yalıtım düzeyi altında çalışan işlemlerin gereksinimlerini karşılamak yeterince uzun tutulur.The Database Engine tracks the earliest useful transaction sequence number and periodically deletes all row versions stamped with transaction sequence numbers that are lower than the earliest useful sequence number.

Her iki veritabanı seçeneği KAPALı olarak belirlendiğinde, Tetikleyicileri veya MARS oturumu tarafından değiştirilmiş veya okuma ONLINE dizin işlemleri tarafından satır sürüm bilgisi var.Bu satır sürümler artık gerekmediğinde yayımlanmaktadır.Bir arka plan iş parçacığı, eskiyen satır sürümleri kaldırmak için düzenli olarak yürütür.

Not

Kısa süreli hareketlerinde değiştirilen satır sürüm arabellek havuzu disk dosyasına yazılan olmadan önbelleğe tempdb veritabanıdır.Sürüm bilgisi satır gereksinimini short-lived, arabellek havuzundan yalnızca bırakılan ve her zaman g/Ç yükü tabi..

Veri okuma, davranışı

Ne zaman satır yalıtım sürüm tabanlı veri okuma altında çalışan işlemler, okuma işlemleri paylaşılan (S) kilitlerin okunan verileri almak ve bu nedenle olmayan veri değiştiriyorsunuz blok işlemleri yapın.Ayrıca, alınan kilitlerin sayısını sınırlı gibi kaynakları kilitleme yükü küçültülür.Okuma yalıtım satır sürümü kullanılarak kaydedilmiş anlık görüntü görüntü yalıtım deyim düzey sağlamak için tasarlanmıştır ve işlem düzeyinde consistencies sürüm bilgisi veri okunamıyor.

Satır sürüm tabanlı bir yalıtım düzeyi altında çalışan işlemler de dahil olmak üzere, tüm sorgular, derleme ve çalıştırma sırasında Sch-S (şema kararlılık) kilitlerin alın.Hakkında olgu için birden çok dizin başvuruda bulunan bir dizin ipucu kullanıldığında tablo yıldız birleşimi iyileştirici dizin ipucu dikkate almaz ve bir uyarı iletisi verir.Ayrıca, Dizin ORing belirtilen bir dizin ipucu bir tablo için izin verilmez.Satır sürüm tabanlı bir yalıtım düzey altında çalışan dahil olmak üzere, sorgu işlemleri Sch-S kilidinin çalışılırken engellendi.keepidentityBULK seçeneği kullanılırken bir INSERT deyim yalnızca ilgili Kilit uyumluluğu (Veritabanı Altyapısı)openrowset.

Anlık görüntü yalıtım düzey'ni kullanan bir işlemde örnek başlatıldığında Database Engine tüm etkin işlemler kaydeder. anlık görüntü hareketi bir sürüm zinciri içeren bir satır okuduğunda Database Engine zincirdeki izler ve hareketin sıra numarası olduğu satırı alır:

  • En yakın sıra ancak alt satır okuma anlık görüntü görüntü hareket sayısı.

  • Listede olmayan anlık görüntü hareketi yeniden başlatıldığında etkin işlemlerin.

Anlık bir işlem tarafından gerçekleştirilen okuma işlemleri sırasında kaydedilmiş her satır en son sürüm almak saat anlık işlemi başlatıldı.Bu işlemin başlangıcında varolan bu veri işlem tutarlı bir görüntüsünü sağlar.

Okuma için kabul edilen hareketleri satır sürüm oluşturmayı kullanarak çok aynı şekilde çalışır.Okundu olarak kaydedilmiş işlem kendi işlem sırası numarası satır sürümleri seçerken kullanmadığından farktır.Bir deyim her başlatıldığında okunur kaydedilmiş işlem bu örnek için verilen son hareketin sıra numarası okur Database Engine. Bu deyim için doğru satır sürümü seçmek için kullanılan hareket sıra numarası budur.Bu, her deyim başlangıcında varolduğundan veri anlık görüntü görüntü görmek okuma tamamlanmış hareketler sağlar.

Not

Kabul edilen okuma işlemlerini kullanarak satır olsa sürüm verilerin oluşturulan veya bu tür bir işlem tarafından erişilen sürümleri, işlem tamamlanıncaya kadar sürdürülür satır bir deyim düzeyinde işlem tutarlı bir görünümünü sağlar.

Veri değiştirme, davranışı

Satır sürümü kullanılarak okuma kaydedilmiş işlemde, güncelleştirme için bir satır seçimini yapılır veri değerleri okurken bir güncelleştirme (U) kilit veri satırı nereden alınır engelleme tarama kullanma.Bu satır sürümü kullanan bir okuma kaydedilmiş işlem aynıdır.Verileri satır güncelleştirme ölçütleri karşılamıyorsa, güncelleştirmenin kilit üzerinde ve sonraki satırı satır kilitli ve taranan yayımlanır.

anlık görüntü görüntü yalıtım altında çalışan işlemler, yalnızca, kısıtlamaları zorlamak için değişiklik yapmadan önce veri üzerinde kilit alınıyor tarafından veri değişikliği için iyimser bir yaklaşım alın.Değiştirilecek veri oluncaya kadar aksi halde, kilitlerin verileri alınmış değil.Bir veri satırı ölçütleriyle, anlık görüntü hareket veri satırı kaydedilmiş anlık hareketin başlamasından sonra eşzamanlı bir işlem tarafından değiştirilmemiş doğrular.Verileri satır, anlık görüntü hareket dışından değiştirildi, bir güncelleştirme çakışması ortaya çıkar ve anlık işlem sonlandırıldı.Güncelleştirme çakışması tarafından ele Database Engine ve güncelleştirmeyi devre dışı bırakmak için bir yol çakışma algılama.

Not

Snapshot hareketi aşağıdakilerden herhangi birini eriştiğinde, anlık görüntü yalıtım altında dahili çalışan güncelleştirme işlemlerini altında okuma kaydedilmiş yalıtım yürütün:

Bir tablo ile bir yabancı anahtar kısıtlaması.

A tablo başka biri yabancı anahtar kısıtlamasında başvuruda bulunulan tablo.

dizinli görünüm birden fazla başvuru tablo.

Ancak, bu koşullar altında hatta verileri başka bir işlem tarafından değiştirilmemiş olduğunu doğrulamak güncelleştirme işlemi devam eder.Verileri başka bir işlem tarafından değiştirildi, anlık görüntü hareket bir güncelleştirme çakışması karşılaşır ve sonlandırıldı.

Özet davranış

Aşağıdaki tabloda, anlık görüntü yalıtım ve satır sürümü kullanılarak kaydedilmiş okuma yalıtım arasındaki farkları özetler.

Özellik

Okundu olarak kaydedilmiş yalıtım düzey satır sürüm oluşturma

Anlık görüntü yalıtım düzey

Gerekli desteğini etkinleştirmek için ON olarak ayarlanması veritabanı seçeneği.

read_committed_snapshot

allow_snapshot_isolation

Nasıl bir oturum, türünü satır sürüm ister.

Yalıtım düzey READ KAYDEDILMIŞ belirtmek için işlem yalıtım düzey küme deyimini çalıştırın veya varsayılan okuma için kabul edilen bir yalıtım düzey'ni kullanın.Işlemin başlatıldıktan sonra bu yapılabilir.

Hareketin başlangıç önce anlık görüntü görüntü yalıtım düzey belirlemek için işlem yalıtım düzey küme yürütülmesi gerekir.

Ifadeler tarafından okunan veri sürüm.

Her deyim başlangıcından önce kaydedilmiş tüm veriler.

Her hareket başlangıcından önce kaydedilmiş tüm veriler.

Güncelleştirmelerin nasıl işlenir.

Güncelleştirilecek satırları seçmek için gerçek veri satırı versiyonlardan döner ve seçili veri satırlarda güncelleştirme kilitler kullanır.Değiştirilecek gerçek veri satırları üzerinde özel kilit edinme.Hiçbir güncelleştirme çakışması saptama.

Satır sürümlerini güncelleştirmek için satırları seçmek için kullanır.Değiştirilecek bir özel gerçek veri kilit çalışır satır ve verileri başka bir işlem tarafından değiştirildi, bir güncelleştirme çakışması ortaya çıkar ve anlık görüntü görüntü işlem sonlandırıldı.

Çakışma algılama güncelleştirin.

Yok.

Tümleşik desteği.Devre dışı bırakılamıyor.