Aracılığıyla paylaş


Satır güncelleştirme kaynak kullanımı

Satır sürümü framework bulunan aşağıdaki özellikleri destekler. SQL Server:

  • Tetikleyicileri

  • Birden çok Active sonuçlar kümesi (MARS)

  • Çevrimiçi olarak dizin oluşturma

Satır sürümü framework Ayrıca, varsayılan değer olarak etkin olmayan aşağıdaki satır sürüm temelli hareket yalıtım düzeyi, destekler:

  • READ_COMMITTED_SNAPSHOT veritabanı seçeneği AÇıK olduğunda, satır sürüm oluşturmayı kullanarak tutarlılık deyim düzey okunamıyor READ_COMMITTED hareketleri sağlar.

  • ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneği AÇıK olduğunda, anlık GÖRÜNTÜ hareketlerin tutarlılık satır sürüm oluşturmayı kullanarak işlem düzeyinde okuma sağlar.

Satır sürümü tabanlı izolasyon düzeyleri, okuma işlemleri üzerinde paylaşılan bir kilit kullanımını ortadan kaldırarak, işlem tarafından alınan kilitlerin sayısını azaltın.Bu kilitleri yönetmek için kullanılan kaynakları azaltarak sistem performansını artırır.Bir işlemin diğer işlemler tarafından alınan kilitleri tarafından engellenen sayısını azaltarak performansı da arttırılır.

Satır sürümü tabanlı izolasyon düzeyleri ile veri değişiklikleri gerekli kaynakları artırın.Bu seçeneği etkinleştirmek, sürüm bilgisi veritabanının tüm veri değişiklikleri oluşmasına neden olur.Satır sürümü tabanlı yalıtımı kullanan hiçbir etkin hareket olduğunda bile, değişiklik önce verilerin BIR kopyasını tempdb içinde depolanır.Verileri değiştirme sonra sürüm bilgisi tempdb içinde depolanan veriler için bir işaretçi içerir.Büyük nesneler için değiştirilen nesneyi yalnızca bir kısmını için tempdb kopyalanır.

Tempdb içinde alan kullanılır.

Her örneği için Database Engine, tempdb her örnek veritabanı için oluşturulan satır sürümleri saklamak için yeterli boş alan olması gerekir. Veritabanı yöneticisine, tempdb sürüm deposu desteklemek için yeterli alana sahip olmanız gerekir.Tempdb içinde iki sürüm mağazaları da vardır:

  • Tüm veritabanlarının çevrimiçi dizin yapılarında çevrimiçi Dizin Oluþturma sürüm deposu 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 gerekli olarak satır sürümleri için depolanmalıdır.Dakikada bir kez, bir arka plan iş parçacığı artık gerekli olmayan satır sürümlerini kaldırır ve tempdb içinde Sürüm alanı boşaltır.Uzun süren bir işlem, sürüm deposu alanında aşağıdaki koşullardan birini karşılıyor, serbest engeller:

  • Bu satır sürüm tabanlı yalıtım kullanır.

  • Bu, Tetikleyicileri, MARS veya çevrimiçi bir dizin oluşturma işlemleri için kullanır.

  • Bu satır sürümleri oluşturur.

Not

Tetikleyici içinde bir işlem çalıştırıldığında, tetikleyici tarafından oluşturulan satır sürümleri tetikleyici tamamlandıktan sonra satır sürümler artık gerekli olmayan olsa bile, işlemin sonuna kadar sürdürülür.Bu satır sürümü kullanan okuma kaydedilmiş hareketler için geçerlidir.Bu hareket türü ile veritabanının işlem tutarlı bir görünüm yalnızca her için gereken deyim harekete.Bu deyim tamamlandıktan sonra harekete bir tablo için oluşturulan sürümleri artık gerekli olmayan satır anlamına gelir.Ancak, her deyiminde bir işlem tarafından oluşturulan satır sürümleri, işlem tamamlanıncaya kadar sürdürülür.

Tempdb alanı, çalıştığında Database Engine küçültülecek sürüm depoları zorlar. Küçültme işlemi sırasında henüz satır sürümlerinde oluşturulan olmayan en uzun çalışan hareketleri kurbanlarının işaretlendi.Bir iletinin 3967 içinde oluşturulan hata günlüğü her kurban hareket.Bir işlem bir kurban olarak işaretliyse, sürüm deposu sürümlerinde satır artık okuyabilirsiniz.Satır sürümleri okumaya çalıştığında 3966 iletisi oluşturulur ve işlem geri alındı.Shrinking işlemi başarılı olursa, bu alanı tempdb içinde kullanılabilir.Aksi halde, tempdb alanı çalıştırır ve aşağıdaki olaylar gerçekleşir:

  • Işlemleri yürütmek, ancak bunu devam yazma sürümü oluştur.Bir bilgi iletisi (3959) hata günlüğünde görünür, ancak veri yazma hareketi etkilenmez.

  • Hareketleri bir tempdb tam geri alma nedeniyle oluşturulan satır sürümleri erişme girişiminde bir hatayla 3958 sonlandırın.

Verileri satır kullanılan alan

Her veritabanı satırı en fazla 14 bayt, satırın sonuna satır sürüm oluşturma bilgileri için kullanabilir.Satır sürüm bilgilerini, sürüm ve işaretçiyi sürüm bilgisi satıra kaydedilmiş hareketin hareket sıra numarası içerir.Ilk kez satır değiştirilir veya ne saat yeni bir satır, tüm bu koşullar altında eklenir, bu 14 bayt eklenir:

  • READ_COMMITTED_SNAPSHOT veya ALLOW_SNAPSHOT_ISOLATION ON seçenekleridir.

  • Tablo için bir tetikleyici vardır.

  • Birden çok Active sonuçlar kümesi (MARS) kullanılıyor.

  • Çevrimiçi bir dizin oluşturma işlemleri, tablo üzerinde çalışmakta olan.

Bu 14 bayt veritabanından kaldırıldığını ilk satır saat satır, tüm bu koşullar altında değiştirilir:

  • READ_COMMITTED_SNAPSHOT ve ALLOW_SNAPSHOT_ISOLATION OFF seçenekleridir.

  • Tetikleyici, tablo üzerinde artık yok.

  • MARS kullanılmamaktadır.

  • Çevrimiçi bir dizin oluşturma işlemleri şu anda çalışmıyor.

Satır sürümü özelliklerinden herhangi birini kullanıyorsanız, 14 baytların her veritabanı satırı yerleştirmek veritabanı için ek disk alanı ayrılamadı gerekebilir.Geçerli sayfa üzerinde kullanılabilir yeterli alan yoksa satır sürüm oluşturma bilgilerini ekleme dizin sayfası bölmeleri veya yeni bir veri sayfasının tahsisat neden olabilir.Örneğin, ek 14 baytları varolan neden ortalama satır uzunluğu 100 bayt, tablo en çok yüzde 14'e ulaşması için.

Azalan doldurma faktörü , engellemek ya da dizin sayfaların parçalanma azaltmak için yardımcı olabilir.Verileri ve dizinleri, bir tablo veya Görünüm parçalanma bilgilerini görüntülemek için dbcc showcontig.

Büyük, nesneler için kullanılan alan

The SQL Server Database Engine supports six data types that can hold large strings up to 2 gigabytes (GB) in length: nvarchar(max), varchar(max), varbinary(max), ntext, text, ve image. Büyük dizesi bu veri türleri kullanılarak saklanan bir dizi veri satıra bağlı veri parçalarını depolanır.Satır sürüm bilgileri, bu büyük dizeleri depolamak için kullanılan her bir parçası depolanır.Veri parçalarını tablodaki büyük nesneler için ayrılmış bir sayfa koleksiyon olan.

Yeni büyük değerler, bir veritabanına eklenir, bunları 8040 bayt veri parça başına en fazla kullanılarak ayrılır.Önceki sürümleri Database Engine 8080 bayt olarak depolanır. ntext, text, veya image parça başına veri.

Varolan ntext, text, ve image büyük bir nesne (LOB) veri veritabanı yükseltildiğinde, alan satır sürüm bilgileri sağlamak için güncelleştirildi SQL Server bir önceki sürümünden SQL Server. Ancak, LOB veriler değiştirildiğinde, ilk kez, dinamik olarak sürüm bilgilerinin depolanmasını etkinleştirmek için yükseltilir.Satır sürümlerinde oluşturulmuş olsa bile bu durum gerçekleşir.LOB veri yükseltildikten sonra en yüksek bayt bir parçası olarak depolanan, 8080 bayt 8040 bayta düşürülür.Yükseltme işlemi, LOB değeri silme ve aynı değeri reinserting eşdeğerdir.Yalnızca tek bir bayt değiştirilmiş olsa bile, LOB veri yükseltilir.Bu bir-, saat her işlemi ntext, text, veya image sütun, ancak her işlem büyük miktarda sayfa ayırmalar ve LOB veri boyutunu bağlı olarak g/Ç etkinliği oluşturabilir. Değişiklik tam olarak günlüğe kaydedilirse, günlük tutma faaliyetini büyük miktarda de oluşturabilir.FULL için veritabanı kurtarma moduna ayarlanmışsa, en az WRITETEXT ve UPDATETEXT işlemlerini günlüğe kaydedilir.

The nvarchar(max), varchar(max), and varbinary(max) data types are not available in earlier versions of SQL Server.Bu nedenle, yok bir yükseltme sorunları bulunmaktadır.

Bu gereksinimin uyması için yeterli disk alanı ayrılması.

Satır güncelleştirme ve sürüm depo izleme

Satır sürümü, sürüm deposu ve anlık görüntü görüntü ayırma işlemleri performansı ve sorun izleme SQL Server Dinamik yönetim görünümleri (DMVs) biçiminde araçları ve Windows Sistem Monitörü'nde performans sayacı sağlar.

DMVs

Aşağıdaki DMVs tempdb ve sürüm deposu, yanı satır sürüm oluşturmayı kullanarak hareketleri sıra geçerli sistem durumuyla ilgili bilgi sağlar.

sys.dm_db_file_space_usage.Verir, veritabanındaki her dosya için kullanım bilgileri alanı.Daha fazla bilgi için bkz:sys.dm_db_file_space_usage (Transact-SQL).

sys.dm_db_session_space_usage.Verir, veritabanı oturum tarafından tahsisat ve miktarda kaldırma aktivite sayfa.Daha fazla bilgi için bkz:sys.dm_db_session_space_usage (Transact-SQL).

sys.dm_db_task_space_usage.Tahsisat ve miktarda kaldırma aktivite döndürür, veritabanı için bir görev tarafından sayfa.Daha fazla bilgi için bkz:sys.dm_db_task_space_usage (Transact-SQL).

sys.dm_tran_top_version_generators.Sürüm deposu sürümlerinde en üretme nesneler için sanal bir tablo döndürür.Bu, üst 256 toplanan kayıt uzunlukları database_id ve rowset_id göre gruplandırır.Sürüm deposu en büyük olan müşterileri 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.Bir sanal fonksiyonu tablo, ortak Sürüm deposundaki tüm sürüm kayıtları görüntüler.Daha fazla bilgi için bkz:sys.dm_tran_version_store (Transact-SQL).

Not

sys.dm_tran_top_version_generators ve sys.dm_tran_version_store her ikisi de çok büyük olabilir tüm sürüm deposu, sorgu, çalıştırma için büyük olasılıkla çok pahalı işlevlerdir.

sys.dm_tran_active_snapshot_database_transactions.Tüm etkin işlemler için sanal bir tablo tüm veritabanlarını verir SQL Server Bu kullanım satır sürüm örnek. Sistem işlemleri bu DMV içinde görünmüyor.Daha fazla bilgi için bkz:sys.dm_tran_active_snapshot_database_transactions (Transact-SQL).

sys.dm_tran_transactions_snapshot.Sanal tablo, her bir işlem tarafından gerçekleştirilen anlık görüntüler döndürür.Rapor anlık görüntü görüntü görüntüsünü, etkin işlemlerin satır sürümü kullanan bir sıra numarası içerir.Daha fazla bilgi için bkz:sys.dm_tran_transactions_snapshot (Transact-SQL).

sys.dm_tran_current_transaction.Geçerli oturumda hareketin satır sürüm oluşturma ile ilgili durum bilgilerini görüntüleyen tek bir satır döndürür.Daha fazla bilgi için bkz:sys.dm_tran_current_transaction (Transact-SQL).

sys.dm_tran_current_snapshot.Adresinde yer alan tüm etkin işlemler görüntüleyen sanal bir tablo döndüren saat geçerli anlık görüntü görüntü yalıtım hareket başlatır.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 Server performans sayaçları tarafından etkilenen sistem performansı hakkında bilgiler sağlar. SQL Server işler. Aşağıdaki başarım sayaçları, tempdb ve sürüm deposu, yanı satır sürüm oluşturmayı kullanarak hareketleri sıra izler.Performans sayaçlarını SQLServer:Transactions performans nesnesinde yer alır.

Içinde tempdb (KB) boş alan.Boş alan tempdb veritabanında tutar, kilobayt (KB) izler.Olmalıdır yeterli boş alan tempdb içinde anlık görüntü görüntü yalıtım destekleyen sürüm deposu işlenecek.

Aşağıdaki formül, sürüm deposu boyutunun kaba bir tahmini sağlar.Uzun süre çalışan işlemler için oluşturma ve sürüm deposu en büyük boyutunu tahmin etmek için temizlemeyi hızı izlemek yararlı olabilir.

[ortak sürüm deposunun boyutu] = 2 * [sürüm deposu veri dakika oluşturulan] * [en uzun saat (dakika) hareketin çalışan]

En uzun çalışan saat hareketlerinin çevrimiçi dizin yapýlar içermemesi gerekir.Bu işlem çok büyük tablolarda çok uzun saat alabilir, çünkü çevrimiçi dizin yapýlar ayrı sürüm deposu kullanın.Çevrimiçi bir dizinin yaklaşık boyutu oluşturma, sürüm deposu çevrimiçi dizin oluşturma etkinken, tüm dizinler dahil olmak üzere tabloda değişiklik veri miktarına eşittir.

Sürüm deposu boyutu (KB).Tüm sürüm depolarının KB cinsinden boyutu izler.Bu bilgiler, sürüm deposu tempdb veritabanında gereken boş alan miktarını yardımcı olur.Bu sayaç, bir dönem içinde izleme yararlı bir tahmin tempdb için gereken ek bir alan sağlar.

Sürüm oluşturma hızı (KB/sn.).Sürüm oluşturma hızı KB / sn tüm sürüm depolarda izler.

Sürüm temizleme hız (KB/sn.).Sürüm temizleme hızı KB / sn tüm sürüm depolarda izler.

Not

Sürüm oluşturma hızı (KB/s) ve sürüm temizleme hızı (KB/s) bilgi tempdb alanı gereksinimleri tahmin etmek için kullanılabilir.

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, sürüm sayısı örnek yeniden başlatıldıktan sonra satır sürümlerini depolamak için oluşturulan birimleri depolar.

Sürüm deposu birimi kesme.Örnek başlatılmasından bu yana kesildi sürüm deposu birimlerin toplam sayısını izler.Bir Sürüm depolama birimi kesildi olduğunda SQL Server Sürüm deposu biriminde depolanan sürüm satırları hiçbiri etkin işlemler çalıştırmak için gerekli olduğu belirler.

Güncelleştirme çakışması oranı.Güncelleştirme anlık görüntü görüntü hareketlerin toplam sayısı güncelleştirme çakışmaları olan güncelleştirmenin anlık görüntü görüntü hareket oranını izler.

En uzun işlem çalıştırma saat.En uzun çalışan izler saat saniye satır sürüm oluşturmayı kullanarak herhangi bir hareket.Bu, herhangi bir hareket bölümde tutarını çalışıp çalışmadığını belirlemek için kullanılabilir.

Hareketleri.Etkin hareketlerin toplam sayısını izler.Bu, sistem işlemlerindeki içermez.

Anlık görüntü dökümü.Etkin bir anlık görüntü hareketlerin toplam sayısını izler.

anlık görüntü Hareketleri güncelleştirme.Güncelleştirme işlemlerini gerçekleştiren etkin anlık görüntü görüntü hareketlerin toplam sayısını izler.

NonSnapshot sürüm işlem.Sürüm kayıtları oluşturmak, etkin olmayan anlık görüntü görüntü hareketleri toplam sayısını izler.

Not

Güncelleştirme anında hareketleri ve NonSnapshot sürüm hareketleri toplamı, sürüm oluşturma katılan hareketlerin toplam sayısı temsil eder.anlık görüntü hareketleri ve güncelleştirme anında hareketleri farkının anlık görüntü görüntü görüntü (salt okunur hareket sayısı bildiriyor.