Satır sürüm oluşturma kaynak kullanımı
Satır sürüm oluşturma framework bulunan aşağıdaki özellikleri destekler SQL Server:
Tetikleyicileri
Birden çok Active sonuçları kümesi (mars)
Çevrimiçi dizin oluşturma
Satır sürüm oluşturma framework, varsayılan değer olarak etkin olmayan aşağıdaki satır sürüm oluşturma tabanlı hareket izolasyon düzeyleri, de destekler:
READ_COMMITTED_SNAPSHOT veritabanı seçeneği on olarak ayarlandığında, tutarlılık kullanarak satır sürüm oluşturma deyim düzey okuma READ_COMMITTED hareketleri sağlar.
ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği on olarak ayarlandığında, anlık görüntü hareketleri, işlem düzey okuma satır sürüm oluşturma'yı kullanarak tutarlılık sağlar.
Satır sürüm oluşturma tabanlı yalıtım düzeyleri paylaşılan kilitleri okuma işlemleri üzerinde kullanımını ortadan kaldırarak hareket tarafından alınan kilitleri sayısını azaltın.Bu Kilitleri yönetmek için kullanılan kaynakları azaltarak sistem performansını artırır.Ayrıca diğer işlemler tarafından alınan kilitleri tarafından engellenen bir işlem sayısını azaltarak performansı artırılır.
Satır sürüm oluşturma tabanlı yalıtım düzeyleri tarafından veri değişiklikleri gerekli kaynakları artırmak.Bu seçenekleri etkinleştirmek için veritabanının sürümü tutulan tüm veri değişiklikleri olur.Değişikliği depolanır önce verilerin bir kopyasını tempdb bile, hiçbir etkin hareketler kullanarak satır sürüm oluşturma tabanlı yalıtım.Veri değişikliği depolanan sürüm bilgisi verileri gösteren bir işaretçi içerir sonra tempdb.Değiştirilen nesne yalnızca bir kısmını kopyalanır büyük nesneler için tempdb.
Alan kullanılan tempdb '
Her örnek için Veritabanı Altyapısı, tempdb örnek her veritabanı için oluşturulan satır sürümleri saklamak için yeterli alana sahip olması gerekirVeritabanı Yöneticisi emin olmanız gerekir tempdb olan kapasiteleri destekleyecek sürüm deposu.İki sürüm mağaza içinde tempdb:
Çevrimiçi dizin yapı sürüm deposu çevrimiçi dizin yapılarında tüm veritabanları için kullanılır.
Diğer tüm veritabanlarındaki tüm veri değiştirme işlemleri için ortak sürüm deposu kullanılır.
Erişim etkin bir işlem gerekiyor sürece satır sürümleri için saklanmalıdır.Bir kez her dakika bir arka plan iş parçacığı artık gerekli olmayan satır sürümleri kaldırır ve içinde sürüm alanı boşaltır tempdb.Uzun süren işlem aşağıdaki koşullardan birini karşılıyorsa, yayımlanan sürüm deposu alanı engeller:
Bu satır sürüm oluşturma tabanlı yalıtım kullanır.
Bu tetikleyici, mars veya çevrimiçi dizin oluşturma işlemleri kullanır.
Satır sürümleri oluşturur.
Not
Bir hareket içinde bir tetikleyici çalıştırıldığında, tetikleyici tarafından oluşturulan satır sürümleri tetikleyici tamamlandıktan sonra satır sürümleri artık halde hareket sonuna kadar sürdürülür.Bu satır sürüm oluşturma'yı kullanma okunur kaydedilen işlem için de geçerlidir.Bu tür hareketleri ile ETE bir veritabanı görünümünü yalnızca her için gerekli olan deyim hareket.Bu deyim tamamlandıktan sonra işlem deyiminde için oluşturulan sürümleri artık gerekli olmayan satır anlamına gelir.Ancak, hareket içindeki her deyim tarafından oluşturulan satır sürümleri, hareket tamamlanıncaya kadar sürdürülür.
Zaman tempdb boş alan kalmadığında, Veritabanı Altyapısı zorlar sürüm depolar için küçültme.Küçültme işlemi sırasında henüz satır sürümleri oluşturulan olmayan en uzun çalışan hareketlerini kurbanların işaretlenir.3967 İleti içinde üretilen hata günlüğü her kurban hareket.Bir hareket olarak işaretlenmişse, bir kurban, artık satır sürümleri Sürüm deposundaki okuyabilirsiniz.Satır sürümleri okumaya çalıştığında 3966 iletisi oluşturulur ve işlem geri alınır.Shrinking işlemi başarılı olursa, boş alan olarak kullanılabilir duruma tempdb.Aksi takdirde, tempdb boş alan ve aşağıdaki çalışır oluşur:
Yazma işlemleri devam yürütmek, ancak bunu yapmak sürümleri oluşturmak değil.Bir bilgi iletisi (3959) yer hata günlüğü, ancak veri yazma işlemi etkilenmez.
Nedeniyle oluşturulan satır sürümleri erişmeye hareketleri bir tempdb tam bir geri alma işlemi Sonlandır bir hata 3958.
Veri satırlarını kullanılan alan
Her veritabanı satırı en fazla 14 bayt satır sonuna satır sürüm oluşturma bilgileri için kullanabilir.Satır sürüm oluşturma bilgileri için sürüm bilgisi satır sürüm ve işaretçiyi taahhüdünde hareketin hareket sıra numarası içerir.İlk satırın değiştirilir veya ne saat yeni bir satır, tüm bu koşullar altında eklenen bu 14 bayt eklenir:
READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION on seçeneklerdir.
Tablo bir tetikleyici vardır.
Birden çok etkin sonuç kümeleri (mars) kullanılıyor.
Çevrimiçi dizin oluşturma işlemleri Tablo üzerinde çalışmakta olan.
Bu 14 bayt veritabanından kaldırılır ilk satır saat tüm bu koşullar altında satır değiştirilir:
READ_COMMITTED_SNAPSHOT ve ALLOW_SNAPSHOT_ISOLATION off seçeneklerdir.
Tetikleyici tablo üzerinde artık yok.
mars kullanılmıyor.
Çevrimiçi dizin oluşturma işlemleri şu anda çalışmıyor.
Satır sürüm oluşturma özelliklerinden herhangi birini kullanıyorsanız, veritabanı veritabanı satırı başına 14 bayt uyması ek disk alanı ayırmak gerekebilir.Satır sürüm oluşturma bilgilerini ekleme neden olabilir dizin sayfası bölmelerini veya geçerli sayfa üzerinde kullanılabilir yeterli alan yoksa yeni bir veri sayfası ayrılması.Ortalama satır uzunluğu 100 bayt olabilir, örneğin, ek 14 bayt var neden tablo en çok yüzde 14'e ulaşması için.
Azalan doldurma faktörü engellemek veya dizin sayfalarının parçalanma azaltmak için yardımcı olabilir.Veri ve dizinler, parçalanma bilgilerini görüntülemek için bir tablo veya görünümü kullanarak dbcc showcontig.
Büyük nesneler kullanılan alan
The SQL Server Veritabanı Altyapısı supports six data types that can hold large strings up to 2 gigabytes (GB) in length: nvarchar(max), varchar(max), varbinary(max), ntext, text, and image.Bu veri türleri kullanılarak saklanan büyük veri dizeleri veri satırı bağlı veri parçaları bir dizi saklanır.Satır sürüm oluşturma bilgilerini bu büyük dizeleri depolamak için kullanılan her parçasında depolanır.Veri parçaları olan bir koleksiyon büyük bir tablo nesneleri için ayrılmış sayfa.
Büyük değerler yeni bir veritabanına eklenmiş olarak 8040 bayt veri parçası başına en fazla kullanılarak ayrılır.Önceki sürümlerinde Veritabanı Altyapısı depolanan 8080 bayt sayısı ntext, text, veya image Parça bazında veri
Var olan ntext, text, ve image büyük nesne (lob) veri güncelleştirilmiyor yapmak için bir veritabanı yükseltme yaptıysanız, sürüm bilgisini alan SQL Server önceki bir sürümünden SQL Server.Ancak, ilk saat lob veri değiştirildiğinde, sürüm oluşturma bilgilerini saklama'yı etkinleştirmek için dinamik olarak yükseltilir.Değil oluşturulan satır sürümleri olsa bile, bu durum gerçekleşir.lob veri yükseltildikten sonra parça depolanan bayt sayısı 8080 baytlar için 8040 bayt azalır.Yükseltme işlemi lob değeri silme ve aynı değeri yeniden takarak denktir.Tek bir bayt değiştirilmiş olsa bile, lob verileri yükseltilir.Bu tek-,saat işlem için her ntext, text, veya image sütunu, ancak her operasyon sayfa ayırma ve boyutu üzerine bağlı olarak g/Ç etkinliği büyük miktarda üretmeklob verileri. Değişiklik tam olarak kaydedilir, günlük tutma etkinliği büyük miktarda de oluşturabilir.Oturum WRITETEXT ve updatetext işlemleri en az açmış olduğunuz veritabanı kurtarma moduna ise küme için tam.
The nvarchar(max), varchar(max), and varbinary(max) data types are not available in earlier versions of SQL Server.Bu nedenle, hiçbir yükseltme sorunları bulunmaktadır.
Yeterli disk alanı bu gereksinime uygun olarak tahsis edilecek.
Satır sürüm oluşturma ve sürüm deposu izleme
Satır sürüm oluşturma, sürüm deposu ve performans ve sorunları, anlık görüntü yalıtım işlemleri izlemek için SQL Server Dinamik yönetim görünümleri (DMVs) ve Windows Sistem Monitörü performans sayaçları formunda araçları sağlar
DMVs
Aşağıdaki DMVs geçerli sistem durumu hakkında bilgi sağlayan tempdb ve sürüm deposu, aynı zamanda hareketleri kullanarak satır sürüm oluşturma.
sys.dm_db_file_space_usage.Returns space usage information for each file in the database.Daha fazla bilgi için bkz: sys.dm_db_file_space_usage (Transact-sql).
sys.dm_db_session_space_usage.Returns page allocation and deallocation activity by session for the database.Daha fazla bilgi için bkz: sys.dm_db_session_space_usage (Transact-sql).
sys.dm_db_task_space_usage.Returns page allocation and deallocation activity by task for the database.Daha fazla bilgi için bkz: sys.dm_db_task_space_usage (Transact-sql).
sys.dm_tran_top_version_generators.Returns a virtual table for the objects producing the most versions in the version store.Bunu üst 256 toplanan kaydı uzunlukları database_id ve rowset_id göre gruplandırır.Sürüm deposu en büyük tüketiciler bulmak için bu işlev kullanın.Daha fazla bilgi için bkz: sys.dm_tran_top_version_generators (Transact-sql).
sys.dm_tran_version_store.Returns a virtual table that displays all version records in the common version store.Daha fazla bilgi için bkz: sys.dm_tran_version_store (Transact-sql).
Not
sys.dm_tran_top_version_generatorsve sys.dm_tran_version_store beri her ikisi de çok büyük olabilir tüm sürüm deposu sorgu çalıştırmak için büyük olasılıkla çok pahalı işlevlerdir.
sys.dm_tran_active_snapshot_database_transactions.Returns a virtual table for all active transactions in all databases within the SQL Server instance that use row versioning.Sistem işlemleri bu dmv içinde görünmez.Daha fazla bilgi için bkz: sys.dm_tran_active_snapshot_database_transactions (Transact-sql).
sys.dm_tran_transactions_snapshot.Returns a virtual table that displays snapshots taken by each transaction.Anlık görüntü kullanan satır sürüm oluşturma etkin işlemler sıra numarasını içerir.Daha fazla bilgi için bkz: sys.dm_tran_transactions_snapshot (Transact-sql).
sys.dm_tran_current_transaction.Returns a single row that displays row versioning-related state information of the transaction in the current session.Daha fazla bilgi için bkz: sys.dm_tran_current_transaction (Transact-sql).
sys.dm_tran_current_snapshot.Returns a virtual table that displays all active transactions at the time the current snapshot isolation transaction starts.If the current transaction is using snapshot isolation, this function returns no rows.sys.dm_tran_current_snapshot is similar to sys.dm_tran_transactions_snapshot, except that it returns only the active transactions for the current snapshot.Daha fazla bilgi için bkz: sys.dm_tran_current_snapshot (Transact-sql).
Performans sayaçları
SQL Serverperformans sayaçları sağlar tarafından etkilenen sistem performansı hakkında bilgi SQL Server işlemler.Aşağıdaki performans sayaçları tempdb ve sürüm deposu, aynı zamanda hareketleri kullanarak satır sürüm oluşturma.Performans sayaçları SQLServer:Transactions performans nesnesinde yer alır.
Tempdb (kb) boş alan.Boş alan miktarını, kilobayt (kb) cinsinden tutarı izler tempdb veritabanı.Yeterli boş alan olmalıdır tempdb destekleyen sürüm deposu işlemek içinanlık görüntü görüntü yalıtım.
Aşağıdaki formül, sürüm deposu boyutu kabaca bir tahmin sağlar.Uzun çalışan hareketlerini oluşturmayı ve temizleme oranı en yüksek sürüm deposu boyutunu tahmin etmek için izlemek yararlı olabilir.
[ortak sürüm deposu boyutu] = 2 * [dakika oluşturulan sürüm deposu veri] * [en uzun çalışan işlem saat (dakika)]
En uzun çalışan saat çevrimiçi dizin yapılar hareketleri içermelidir.Bu işlemler çok büyük tablolar üzerinde uzun saat alabileceği için çevrimiçi dizin yapılar ayrı sürüm deposu kullanın.Çevrimiçi dizinin yaklaşık boyutu oluşturma sürüm deposu eşittir, değişiklik veri miktarını tablo, çevrimiçi dizin oluşturma etkinken, tüm dizinler dahil olmak üzere.
Sürüm deposu boyutu (kb).Tüm sürüm deposu, kb cinsinden boyutu izler.Bu bilgiler, gerekli boşluk miktarını belirlemek yardımcı olur tempdb veritabanı için sürüm deposu.saat bu sayaç izleme sağlayan yararlı bir tahmin için gereken ek yeri tempdb.
Sürüm oluşturma hızı (kb/s).Sürüm oluşturma hızı KB / saniye tüm sürüm depolarda izler.
Sürüm temizleme hızı (kb/s).Sürüm temizleme oranı KB / sn tüm sürüm depolarda izler.
Not
Bilgi Version Generation rate (KB/s) ve Version Cleanup rate (KB/s) tahmin etmek için kullanılabilir tempdb alanı gereksinimleri.
Sürüm deposu birim sayısı.Sürüm deposu birim sayısını izler.
Sürüm deposu birim oluşturma.Monitör örnek başlatıldıktan sonra satır sürümleri depolamak için oluşturulan birimleri sürüm sayısı depolar.
Sürüm deposu birimi kesilme.Toplam Örnek başlatıldıktan sonra kesilmiş sürüm deposu birim sayısını izler.Sürüm deposu birim kesilir, SQL Server belirler, sürüm deposu biriminde depolanan sürüm satırları hiçbiri gerekiyor çalıştırılacak etkin hareketler.
Güncelleştirme çakışması oranı.Güncelleştirme çakışmaları güncelleştirme anlık görüntü hareketleri toplam sayısına sahip güncelleştirme anlık görüntü işlem oranını izler.
En uzun işlem süresi sona ermek.En uzun çalışan izler saat saniye cinsinden satır sürüm oluşturma'yı kullanarak herhangi bir hareket.Bu, herhangi bir hareket için anormal büyüklükte çalışıp çalışmadığını belirlemek için kullanılabilir saat.
Hareketleri.Etkin işlemler toplam sayısını izler.Bu sistem hareketleri içermez.
Hareketleri anlık görüntüsünü.Etkin anlık görüntü hareketleri toplam sayısını izler.
Anlık görüntü hareketleri güncelleştirme.Güncelleştirme işlemlerini gerçekleştirmek etkin anlık görüntü hareketleri toplam sayısını izler.
NonSnapshot sürüm hareketleri.Sürüm kaydı oluşturmak etkin olmayan anlık görüntü görüntü hareketleri toplam sayısını izler.
Not
Toplamı Update Snapshot Transactions ve NonSnapshot Version Transactions temsil eden toplam işlem sayısı, katılmak sürüm oluşturma.Fark Snapshot Transactions ve Update Snapshot Transactions rapor sayısı salt okunur anlık görüntü hareketleri.
Ayrıca bkz.