Aracılığıyla paylaş


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

Satır sürüm oluşturma, genel bir çerçeve içinde olduğu SQL Server aşağıdakileri yapmak için kullanılan:

  • Yapı eklenen ve Silinmiş tablolarda Tetikleyiciler.Tetikleyici tarafından değiştirilen tüm satırlar sürüm bilgisi.Bu tarafından değiştirilen satırları içeren deyim tetikleyici olarak Tetikleyici tarafından yapılan veri değişiklikleri başlattı.

  • Birden çok etkin sonuç kümeleri (mars) destekler.mars oturum sırasında bir veri değişikliği bildirimi (INSERT, update veya delete) sorunları, bir saat etkin sonuç küme vardır, sürüm bilgisi değişikliği beyannamenin etkilendi.

  • Çevrimiçi seçeneğini belirtin dizin işlemleri desteği.

  • Satır sürüm oluşturma tabanlı hareket izolasyon düzeyleri destekler:

    • Yeni bir uygulama okuma satır sürüm oluşturma deyim düzey okuma tutarlılık sağlamak için kullanır yalıtım düzey kaydedilmiş.

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

The tempdb database must have enough space for the version store.Zaman tempdb dolu, güncelleştirme işlemlerini sürümlerin oluşturulmasını durdurmak ve başarılı olması devam etmek, ancak okuma işlemleri başarısız belirli bir satır için gereken sürüm artık yok.Bu tetikleyici, mars ve çevrimiçi dizin oluşturma gibi işlemler etkiler.Daha fazla bilgi için bkz: Satır sürüm oluşturma kaynak kullanımı.

Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş ve anlık görüntü hareketleri için iki adımdan oluşan bir işlemdir:

  1. Ya da ayarlamak veya hem READ_COMMITTED_SNAPSHOT hem de ALLOW_SNAPSHOT_ISOLATION seçenekleri üzerinde veritabanı.

  2. Uygun set işlem yalıtım düzey bir uygulamada:

    • READ_COMMITTED_SNAPSHOT veritabanı seçeneği on, kaydedilen okuma Ayarlama hareketleri olduğunda yalıtım düzey satır sürüm oluşturma'yı kullanın.

    • ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği on olarak ayarlandığında, hareketleri ayarlamak için anlık görüntü yalıtım düzey.

READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği olduğunda küme on, SQL Server Veritabanı Altyapısı verileri kullanarak işleyen her hareket için bir hareket sıra numarası (xsn) atarsatır sürüm oluşturma. Hareketleri bir BEGIN TRANSACTION deyim yürütüldü saat başlatın.Ancak, ilk ile hareket sıra numarası başlayan okuma veya yazma işlemi sonrasında BEGIN TRANSACTION deyim.Bir hareket sıra numarası artırılır, atanmış her saat.

READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneklerini açık olduğunda, mantıksal kopyaları (sürümler) veritabanında gerçekleştirilen tüm veri değişiklikleri için korunur.Her saat bir satır, örnek gibi belirli bir işlem tarafından değiştirildi Veritabanı Altyapısı satırda önceden kaydedilmiş resmi sürüm saklar tempdb.Her sürüm değişikliği yapan hareketin hareket sıra numarası ile işaretlenir.Bağlantı listesini kullanarak değiştirilen satır sürümleri zincirlenir.En yeni satır değeri her zaman geçerli veritabanında depolanan ve depolanan sürüm bilgisi satır zincirleme tempdb.

Not

Büyük nesneler (LOB'lar) değiştirilmesi için yalnızca değiştirilen parça sürüm deposuna kopyalanır tempdb.

Satır sürümleri satır sürüm oluşturma tabanlı yalıtım düzeyleri altında çalışan işlemlerin gereksinimlerini karşılamak yeterince uzun tutulur.The Veritabanı Altyapısı 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 olduğunda küme için kapalı, Tetikleyiciler veya mars oturumlar tarafından değiştirilmiş veya çevrimiçi dizin işlemleri tarafından okuma satır sürüm bilgisi.Bu satır sürümleri artık gerekli serbest bırakılırlar.Arka plan iş parçacığı eski satır sürümleri kaldırmak için düzenli olarak yürütür.

Not

Kısa süreli hareketler için değiştirilen satır sürüm Arabellek havuzu içinde disk dosyalarına yazılan olmadan önbelleğe tempdb veritabanı.Sürüm bilgisi satır gereksinimini süreli ise, onu sadece dan bırakılan arabellek havuzu ve mutlaka g/Ç ek yük gerektirebilir.

Veri okurken davranışı

Satır sürüm oluşturma tabanlı yalıtım altında çalışan işlemler veri okurken, paylaşılan işlemleri Al oku (s) verileri okuyabilir ve bu nedenle yapmak olan üzerinde kilitler blok veri değiştirme işlemleri.Ayrıca, alınan kilitleri sayısı azalır gibi kaynakları kilitleme yükünü Minimize edilir.Anlık görüntü yalıtım sağlamak için tasarlanmıştır ve okuma kaydedilmiş yalıtım satır sürüm oluşturma'yı kullanarak deyim-sürüm bilgisi veri okuma düzey veya işlem düzey turalılığını.

Satır sürüm oluşturma tabanlı yalıtım düzeyleri altında çalışan işlemleri de dahil olmak üzere tüm sorgular, derleme ve yürütme sırasında Sch-s (şema kararlılık) kilitleri alın.Eş zamanlı hareket Sch-m (şema değiştirme) kilit tutan bu nedenle, sorguları engellenir tablo.Örneğin, veri tanımılama dili (ddl) işlemi isteklerdir Sch-m kilit önce tablo şema bilgileri değiştirir.Satır sürüm oluşturma tabanlı yalıtım düzey altında çalışan da dahil olmak üzere sorgu hareketleri olan bkilitSch-s almaya çalışırken ed kilit.Bunun tersi olarak, Sch-s kilit tutan bir sorgu Sch-m kilidi almak için yapacağı bir eş zamanlı hareket engeller.Hakkında daha fazla bilgi için kilit davranış, bkz: Kilit Uyumluluğu (veritabanı altyapısı).

Bir hareketi kullanırken anlık görüntü yalıtım düzey başlar, örneğini Veritabanı Altyapısı kayıtları tüm etkin işlemler.Anlık görüntü hareket bir sürüm zinciri olan bir satır okuduğunda Veritabanı Altyapısı zincirini izleyen ve hareket sıra numarası olduğu satır alır:

  • En yakın satır okuma anlık görüntü hareket sıra numarası ancak daha düşük.

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

Anlık görüntü hareket tarafından gerçekleştirilen okuma işlemlerinin anlık görüntü hareket başladı saat kaydedilmiş olsaydı her satırın son sürüm alın.Hareketin başlangıcında vardı bu bir ETE verinin anlık görüntü görüntüsünü sağlar.

Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş hareketler çok aynı şekilde çalışır.Okuma kaydedilmiş hareket kendi hareket sıra numarası satır sürümleri seçerken kullanmadığını fark vardır.Her saat bir ifadesi başladı, o örnek için verilen en son hareket sıra numarası okunur kaydedilen işlem okur Veritabanı Altyapısı.Bu, deyim için doğru satır sürümleri seçmek için kullanılan hareket sıra numarasıdır.Bu her deyim başlangıcında mevcut verilerin anlık görüntü görüntüsünü görmek okunur kaydedilen işlem sağlar.

Not

Olsa okunur kaydedilen işlem sayısı kullanarak satır sürüm oluşturma deyim bir veri ETE bir görünümünü sağlar düzey, satır sürümleri oluşturulan veya bu tür bir hareket tarafından erişilen hareket tamamlanıncaya kadar korunur.

Verileri değiştirirken davranışı

Satır sürüm oluşturma'yı kullanarak bir okuma kaydedilmiş hareket içinde satır güncelleştirmek için seçim yapılır burada veri değerlerini okumak gibi veri satır güncelleştirme (u) kilit alınır bir engelleme tarama kullanarak.Bu satır sürüm oluşturma'yı kullanan okuma kaydedilmiş bir hareket aynıdır.Verileri satır güncelleştirme ölçütleri karşılamıyorsa güncelleştirme kilidi üzerinde ve sonraki satırı satır kilitli ve taranan serbest bırakılır.

Hareketleri anlık görüntü yalıtım altında çalışan, yalnızca kısıtlamaları zorlamak için değişiklik yapmadan önce veri üzerinde kilitleri alınıyor tarafından veri değişikliği İyimser bir yaklaşım olur.Alınmasıyla veri değiştirilmesine kadar Aksi takdirde kilitleri verileri elde edilen değil.Veri satırı güncelleştirme ölçütü karşıladığında, anlık görüntü hareket veri satırı snapshot hareketi başlangıcından sonra kabul edilen bir eş zamanlı hareket tarafından değiştirilmemiş olduğunu doğrular.Anlık görüntü hareket dışından veri satırı değiştirildi, güncelleştirme çakışması ortaya çıkar ve anlık görüntü işlem sonlandırıldı.Güncelleştirme çakışması tarafından ele Veritabanı Altyapısı ve hiçbir şekilde devre dışı bırakma güncelleştirme çakışma algılama.

Not

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

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

Başka bir tablonun yabancı anahtar kısıtlamasını içinde başvurulan bir tablo.

Başvuran birden çok dizinli görünüm tablo.

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

Özet davranış

Aşağıdaki tablo anlık görüntü yalıtım ve satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş yalıtım arasındaki farkları özetler.

Özellik

Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş yalıtım düzey

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

Olması gereken veritabanı seçeneği küme gerekli desteğini etkinleştirmek için açık.

READ_COMMITTED_SNAPSHOT

ALLOW_SNAPSHOT_ISOLATION

Nasıl oturum satır sürüm oluşturma belirli türde ister.

Varsayılan okuma kaydedilmiş yalıtım düzey kullanın veya set hareket YALITIM DÜZEYİNE çalıştırmak deyim okunur kaydedilmiş yalıtım düzey belirtmek için.İşlem başladıktan sonra bu yapılabilir.

İşlem başlamadan önce anlık görüntü yalıtım düzey belirtmek için set hareket YALITIM DÜZEYİNE yürütülmesini gerektirir.

İfadeler tarafından okunan veri sürüm.

Her deyim başlamadan önce kaydedilmiş tüm veri.

Her hareket başlamadan önce kaydedilmiş tüm veri.

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

Güncelleştirilecek satırları seçmek için gerçek veri satır sürümleri ' döner ve seçili veri satırları üzerinde güncelleştirme kilitleri kullanır.Özel kilit değiştirilecek gerçek veri satırlarını temel alır.Hiçbir güncelleştirme çakışma algılama.

Güncelleştirilecek satırları seçmek için satır sürümleri kullanır.Bir özel almaya çalışır kilit değiştirilmesi için gerçek veri satırında ve verileri başka bir işlem tarafından değiştirilmiş, güncelleştirme çakışması ortaya çıkar ve anlık 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ılamaz.