Tek bir işlemde aynı kaydın birden fazla güncellenmesi durumunda kaç sürüm saklanıyor?


11

Kimberly L. Tripp tarafından yayınlanan MSDN makalesine göre Neal Graves'in " SQL Server 2005 Satır Sürümlendirme Tabanlı İşlem Yalıtımı

  • " ... belirli bir kaydın tamamı önceki sürümleri bağlı bir listedeki zincirleme ve sürüm tabanlı işlemler satır uzun süren durumunda, bağlantı geçilen gerekecektir her erişiminde ait işlem tutarlı versiyonunu ulaşması satır"

"Satır Sürümlendirmeyi Kullanarak Okunan Satırda Sürüm Oluşturma" ve "Anlık Görüntü Yalıtımında Satır Sürümlendirme" bölümlerini takip etmek için yaygın olan "Satır Sürümlendirmeyi Anlama" bölümünde yer alır.

Ayrıca, değişiklikler nedeniyle satır sürümleme örneği üzerinde, aynı kaydın birden fazla işlemle (T1, T2, T3) yalnızca SNAPSHOT'ta çoklu güncellemeleri bağlamında verilmiştir.

Yalnızca bir işlem bir kaydı birden çok kez (birden çok ifadeyle) güncellerse, birden çok sürüm deposu saklanır (bağlanır) veya yalnızca SNAPSHOT "görüntüsü" anında alınan kayıt saklanır mı?

Bu sorunun cevabı derhal beklemedeki diğer sorularıma cevap vermelidir:

Yanıtlar:


11

Tek bir işlemde aynı kaydın birden fazla güncellenmesi durumunda kaç sürüm saklanır?

Sadece bir tane.

Satıra yapılan ilk güncelleme bir satır sürümü oluşturur ve yalnızca satırı kilitler. Daha sonra aynı işlemde aynı satıra yapılan güncellemeler yeni satır sürümleri oluşturmaz.


Satır sürümlerinin bağlantılı bir listesi aşağıdaki gibi ortaya çıkabilir:

  • Bir SNAPSHOT işlemindeki T1 işlemi bir satırı okur ve 'a' değerini görür.

  • İşlem T2 (herhangi bir yalıtım seviyesi altında) 'a' ile 'b' arasındaki değeri günceller ve taahhüt eder. Bu, 'a' değeri için bir satır sürümü oluşturur.

  • İşlem T3 (herhangi bir yalıtım seviyesinin altında), 'b' ile 'c' arasındaki değeri günceller ve taahhüt eder. Bu, 'b' değeri için bir satır sürümü oluşturur. Bu satır sürümü, 'a' için önceki satır sürümüne bağlanır.

  • T1 işlemi, geçerli sayfada ('c') depolanan değerden, 'b' satır sürümüne ve ardından 'a' satır sürümüne bağlantıyı çaprazlayarak satır değerini okur.

Satır sürümleri, var olan bir okuma işlemi olup olmadığına bakılmaksızın (herhangi bir yalıtım düzeyinde) veri değişiklikleri tarafından oluşturulur. Sürümlere asla ihtiyaç duyulmayabilir, ancak yine de üretilirler - aynı bağlantılı sürümler listesi, T1 işlemi olmadan bile oluşturulur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.