sys.dm_db_index_operational_stats (Transact-SQL)

Geçerli düşükdüzey g/Ç, kilitleme, latching ve her bölüm bir tablo veya dizin için erişim yöntem etkinliği veritabanında döndürür.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

sys.dm_db_index_operational_stats (
    { database_id | NULL | 0 | DEFAULT }
  , { object_id | NULL | 0 | DEFAULT }
  , { index_id | 0 | NULL | -1 | DEFAULT }
  , { partition_number | NULL | 0 | DEFAULT }
)

Bağımsız değişkenler

  • database_id| NULL | 0 | VARSAYILAN
    Veritabanı kimliği.database_idis smallint.Geçerli sinyalidir, boş bir veritabanı kimlik numarası 0 ya da varsayılan.Varsayılan değer 0'dir.null, 0 ve varsayılan eşdeğer bu bağlamda değerlerdir.

    örnek tüm veritabanları için bilgi dönmek için null belirtmek SQL Server.null için belirtirseniz, database_id, de belirtmeniz gerekir için null object_id, index_id, ve partition_number.

    Yerleşik işlev DB_ID belirtilebilir.Veritabanı adı belirtilmeden DB_ID kullanırken, geçerli veritabanı Uyumluluk düzey 90 olmalıdır.

  • object_id | NULL | 0 | VARSAYILAN
    tablo veya Görünüm dizin nesne kimliği açıktır.object_idis int.

    Geçerli girişleri olan bir tablo ya da görünüm, null, kimlik numarası 0 ya da varsayılan.Varsayılan değer 0'dir.null, 0 ve varsayılan eşdeğer bu bağlamda değerlerdir.

    Belirtilen veritabanında tüm tablolar ve görünümler için önbelleğe alınmış bilgileri döndürmek için null belirtin.null için belirtirseniz, object_id, de belirtmeniz gerekir için null index_id ve partition_number.

  • index_id| 0 | NULL | -1 | VARSAYILAN
    Dizin kimliği.index_idis int.Geçerli girişleri olup kimlik numarası 0 bir dizinin object_id olan bir öbek null, -1 veya varsayılan.-1, null, -1, varsayılan değerdir ve varsayılan bu bağlamda eşdeğer değerlerdir.

    temel tablo ya da görünüm için tüm dizinler için önbelleğe alınmış bilgileri döndürmek için null belirtin.null için belirtirseniz, index_id, de belirtmeniz gerekir için null partition_number.

  • partition_number | NULL | 0 | VARSAYILAN
    Bölüm numarası (nesne).partition_numberis int.Geçerli giriş sinyalidir partion_number bir dizin veya yığın, null, 0 veya varsayılan.Varsayılan değer 0'dir.null, 0 ve varsayılan eşdeğer bu bağlamda değerlerdir.

    Tüm bölümler için önbelleğe alınmış bilgileri dizin veya yığın dönmek için null belirtin.

    partition_number1 tabanlıdır.Nonpartitioned dizin veya yığın partition_number küme 1.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

database_id

smallint

Veritabanı kimliği.

object_id

int

tablo veya Görünüm kimliği.

index_id

int

Dizin veya yığın kimliği.

0 = Yığın

partition_number

int

1 tabanlı bölüm numarası dizin veya yığın içinde.

leaf_insert_count

bigint

yaprak- toplam sayımıdüzey ekler.

leaf_delete_count

bigint

yaprak- toplam sayımıdüzey siler.

leaf_update_count

bigint

yaprak-düzey güncelleştirmelerin toplam sayısı.

leaf_ghost_count

bigint

Toplu yaprak- olarak işaretlenendüzey satır sayısı silinir, ancak henüz kaldırıldı.Bu satır küme aralıklarla Temizleme iş parçacığı tarafından kaldırılır.Bu değer, bir bekleyen anlık görüntü yalıtım hareket nedeniyle korunur satır içermez.anlık görüntü yalıtım hareketleri hakkında daha fazla bilgi için bkz: Satır sürüm oluşturma tabanlı yalıtım düzeyleri Veritabanı Altyapısı'nda.

nonleaf_insert_count

bigint

Yukarıda yaprak düzeyekler toplam sayısı.

0 = Yığın

nonleaf_delete_count

bigint

Toplu siler yukarıda yaprak düzeysayısı.

0 = Yığın

nonleaf_update_count

bigint

Toplu güncelleştirmeleri yukarıda yaprak düzeysayısı.

0 = Yığın

leaf_allocation_count

bigint

Toplu yaprak- dizin veya yığındüzey sayfa ayırma sayısı.

Bir dizin için bir sayfa bölünmüş sayfa ayırma karşılık gelir.

nonleaf_allocation_count

bigint

sayfa tarafından neden sayfa ayırma toplu sayısı yaprakdüzeyyukarısındaki böler.

0 = Yığın

leaf_page_merge_count

bigint

Toplam sayfa sayısı yaprak düzeybirleştirir.

nonleaf_page_merge_count

bigint

Toplam sayfa sayısı, yaprak düzeybirleştirir.

0 = Yığın

range_scan_count

bigint

aralık ve tablo taramaları toplu sayısı dizin veya yığın başladı.

singleton_lookup_count

bigint

Dizin veya yığın tek satır alışlardan toplam sayısı.

forwarded_fetch_count

bigint

Bir iletme kaydı getirildi satır sayısı.

0 = Dizinler

lob_fetch_in_pages

bigint

Büyük nesne (lob) sayfaları toplam sayımı lob_data ayırma birimialınır.Bu sayfalar türündeki sütunlarında depolanan verileri içeren text, ntext, image, varchar(max), nvarchar(max), varbinary(max), ve xml.Daha fazla bilgi için, bkz. Veri Türleri (Transact-SQL).Ayırma birimleri hakkında daha fazla bilgi için bkz: Tablo ve dizin organizasyon.

lob_fetch_in_bytes

bigint

Alınan toplu lob veri bayt sayısı.

lob_orphan_create_count

bigint

Toplu işlemlerde oluşturulan sahipsiz lob değerleri toplam sayısı.

0 = Kümelenmemiş dizin

lob_orphan_insert_count

bigint

Sahipsiz lob değerleri toplu işlemleri sırasında eklenen toplam sayısı.

0 = Kümelenmemiş dizin

row_overflow_fetch_in_pages

bigint

satır taşması verisi sayfaları toplam sayısı row_overflow_data ayırma birimialınır.

Bu sayfalar türündeki sütunlarında depolanan verileri içeren varchar(n), nvarchar(n), varbinary(n), ve sql_variant , itilmiş-satır.Daha fazla bilgi için, bkz. 8 kb aşan satır taşma veri.Ayırma birimleri hakkında daha fazla bilgi için bkz: Tablo ve dizin organizasyon.

row_overflow_fetch_in_bytes

bigint

Alınan satır taşması verisi baytlarının toplam sayısı.

column_value_push_off_row_count

bigint

Toplu lob veri ve kapalı bir eklenen veya güncelleştirilen satır uyma bir sayfaoluşturmak için satır itildiği satır taşması verisi değerleri sütun sayısı.

column_value_pull_in_row_count

bigint

Toplu lob veri ve satır çektiği satır taşması verisi değerleri sütun sayısı.Güncelleştirme işlemi bir kayıttaki alan boşaltır ve lob_data veya row_overflow_data ayırma birimi IN_ROW_DATA ayırma birimigelen çekme bir veya daha fazla satır kapalı değerleri için bir fırsat sağlar bu oluşur.Ayırma birimleri hakkında daha fazla bilgi için bkz: Tablo ve dizin organizasyon.

row_lock_count

bigint

İstenen satır kilitlerin toplam sayısı.

row_lock_wait_count

bigint

Toplu kaç kez Veritabanı Altyapısı üzerinde bir satır kilitbekledi.

row_lock_wait_in_ms

bigint

Toplam milisaniye sayısı Veritabanı Altyapısı üzerinde bir satır kilitbekledi.

page_lock_count

bigint

İstenen sayfa kilitlerin toplam sayısı.

page_lock_wait_count

bigint

Toplu kaç kez Veritabanı Altyapısı sayfa kilitbekledi.

page_lock_wait_in_ms

bigint

Toplam milisaniye sayısı Veritabanı Altyapısı sayfa kilitbekledi.

index_lock_promotion_attempt_count

bigint

Toplu kaç kez Veritabanı Altyapısı çalıştığınız yöneticinize iletin kilitler.

index_lock_promotion_count

bigint

Toplu kaç kez Veritabanı Altyapısı aktarılana kilitler.

page_latch_wait_count

bigint

Toplu kaç kez Veritabanı Altyapısı , mandal çekişmenedeniyle bekledi.

page_latch_wait_in_ms

bigint

Toplam milisaniye sayısı Veritabanı Altyapısı , mandal çekişmenedeniyle bekledi.

page_io_latch_wait_count

bigint

Toplu kaç kez Veritabanı Altyapısı üzerinde bir g/Ç sayfa mandalbekledi.

page_io_latch_wait_in_ms

bigint

Toplam milisaniye sayısı Veritabanı Altyapısı üzerinde sayfa g/Ç mandalbekledi.

tree_page_latch_wait_count

bigint

Alt kümesini page_latch_wait_count , sadece üst -düzey B-ağacı sayfaları içerir.Her zaman 0 yığın.

tree_page_latch_wait_in_ms

bigint

Alt kümesini page_latch_wait_in_ms , sadece üst -düzey B-ağacı sayfaları içerir.Her zaman 0 yığın.

tree_page_io_latch_wait_count

bigint

Alt kümesini page_io_latch_wait_count , sadece üst -düzey B-ağacı sayfaları içerir.Her zaman 0 yığın.

tree_page_io_latch_wait_in_ms

bigint

Alt kümesini page_io_latch_wait_in_ms , sadece üst -düzey B-ağacı sayfaları içerir.Her zaman 0 yığın.

page_compression_attempt_count

bigint

Sayfa düzey bir tablo, dizin ya da dizinli görünümiçin sıkıştırma belirli bölümler için değerlendirildi sayfa sayısı.Önemli oranda tasarruf değil elde edilebilir çünkü sıkıştırılan olmayan sayfaları içerir.

page_compression_success_count

bigint

Bir tablo, dizin ya da dizinli görünümbelirli bölümleri sayfa sıkıştırması kullanılarak sıkıştırılan veriler sayfa sayısı.

Açıklamalar

Bu dinamik yönetimi nesne arası uygulamak ve dış uygulama ilişkili parametreleri kabul etmez.

Kullanabileceğiniz sys.dm_db_index_operational_stats kullanıcılar gerekir okumak veya bir tablo, dizin veya bölüm yazmak için bekleyin ve tablolar veya önemli g/Ç etkinliği veya etkin noktalar karşılaşıyor dizinleri tanımlamak olduğunu saat izlemek için.

Aşağıdaki sütunları çekişmealanları tanımlamak için kullanın.

tablo ya da dizin bölümüne ortak erişim desen çözümlemek için, bu sütunları kullanın:

  • leaf_insert_count

  • leaf_delete_count

  • leaf_update_count

  • leaf_ghost_count

  • range_scan_count

  • singleton_lookup_count

Latching ve kilitleme çekişmetanımlamak için bu sütunları kullanın:

  • page_latch_wait_count ve page_latch_wait_in_ms

    Bu sütun, dizin veya yığın ve çekişme, anlamlı değer mandalçekişme olup olmadığını belirtin.

  • row_lock_count ve page_lock_count

    Kaç kez bu sütunları belirtmek Veritabanı Altyapısı çalıştı edinmenin satır ve sayfa kilitleri.

  • row_lock_wait_in_ms ve page_lock_wait_in_ms

    Bu sütun, dizin veya yığın ve çekişme, anlamlı değer kilitçekişme olup olmadığını belirtin.

Bir dizin veya yığın bölümünde fiziksel giriş çıkışları istatistikleri çözümlemek için

  • page_io_latch_wait_count ve page_io_latch_wait_in_ms

    Bu sütunları fiziksel giriş çıkışları dizin getirmek için verilmiş ya da belleğe yığın sayfaları ve kaç çıkışları verilmiş gösteriyor.

Sütun açıklamalar

Değerler lob_orphan_create_count ve lob_orphan_insert_count her zaman eşit olması gerekir.

Sütun değeri lob_fetch_in_pages ve lob_fetch_in_bytes dahil sütunlar bir veya daha fazla lob sütunları içeren kümelenmemiş dizinler için sıfırdan büyük olabilir.Daha fazla bilgi için, bkz. Eklenen sütunlar ile dizin.Benzer şekilde, sütun değeri row_overflow_fetch_in_pages ve row_overflow_fetch_in_bytes dizin satır kapalı itildiği sütunlar içeriyorsa, kümelenmemiş dizinler için 0'dan büyük olabilir.Daha fazla bilgi için, bkz. 8 kb aşan satır taşma veri.

Meta veri önbelleğindeki sayaçları Sıfırla nasıl

Tarafından döndürülen verileri sys.dm_db_index_operational_stats yığın veya dizin temsil eden meta veriler önbellek nesnesi kullanılabilir olduğu sürece bulunmaktadır.Bu veriler, ne kalıcı ya da sonucuna tutarlı değil.Yani, bu sayaçlar, dizin veya kullanılmış veya dizinin en son ne zaman kullanıldığı olup olmadığını belirlemek için kullanamazsınız.Bu konuda daha fazla bilgi için bkz: sys.dm_db_index_usage_stats (Transact-SQL).

Her sütun için her yığın veya dizin için meta veriler meta veriler önbelleğine hazırlanmıştır ve istatistikleri cache nesnesi meta veriler önbelleğinden kaldırılıncaya kadar birikmiş sıfıra küme değerlerdir.Bu nedenle, active yığın veya dizin büyük olasılıkla her zaman kendi meta veriler önbellekte vardır ve toplu sayımları örnek bu yana etkinliği yansıtması SQL Server son başlatılmasından.Kullanıldığı gibi daha az etkin bir yığın veya dizin için meta veriler önbellek içine ve dışına taşıyacak.Sonuç olarak, olabilir veya değerler kullanılabilir olmayabilir.Bir dizin bellekten kaldırılması ve artık işlevtarafından bildirilecek ilgili istatistiklerin neden olur.Diğer dizin DDL işlemleri sıfıra ayarlamak için istatistik değeri neden olabilir.

Parametre değerleri belirtmek için sistem işlevleri kullanma

Kullanabileceğiniz Transact-SQL işlevleri DB_ID ve OBJECT_ID için bir değer belirtmek için database_id ve object_id parametreleri.Ancak, bu işlevler için geçersiz değerler geçirerek istenmeyen sonuçlarneden olabilir.Her zaman DB_ID veya OBJECT_ID kullandığınızda geçerli bir kimliği döndürüldüğünden emin olun.Daha fazla bilgi için açıklamalar bölümüne bakın sys.dm_db_index_physical_stats (Transact-SQL).

İzinler

Aşağıdaki izinleri gerektirir:

  • Veritabanı içinde belirtilen nesne üzerinde denetim izni

  • @ Nesne joker kullanarak belirtilen veritabanı içindeki tüm nesneler hakkında bilgi dönmek için Görünüm veritabanı durumu izinobject_id = null

  • @ Veritabanı joker kullanarak tüm veritabanları hakkında bilgi dönmek için Görünüm server state iznidatabase_id = null

Görünüm veritabanı durumunu verme tüm nesneleri veritabanında belirli nesneler üzerinde engellendi herhangi bir denetim izin alınmadan iade sağlar.

Belirli nesneler üzerinde verilen herhangi bir denetim izinler ne olursa olsun iade için veritabanındaki tüm nesneleri görünüm veritabanı durumu engelleme izin vermez.Ayrıca, ne zaman veritabanı joker @database_id= null belirtilmişse, veritabanı atlanmıştır.

Daha fazla bilgi için, bkz. Dinamik yönetimi görünümler ve işlevler (Transact-SQL).

Örnekler

A.Belirtilen tabloiçin bilgi döndüren

Aşağıdaki örnek tüm dizinler ve bölümleri için bilgi verir Person.Address tablo AdventureWorks2008R2 veritabanı.Bu sorguyu yürüttükten gerektirir, en azından Denetim izni üzerinde Person.Address tablo.

Önemli notÖnemli

Kullanırken Transact-SQL işlevleri DB_ID ve OBJECT_ID bir parametre değeri döndürmek için her zaman sağlamak geçerli bir kimliği döner.Veritabanı veya nesne adı, ne zaman onlar yok veya yanlış yazılmış gibi bulunamazsa, her iki işlevi null döndürür.sys.dm_db_index_operational_statsişlev null tüm veritabanları veya tüm nesneleri belirtir bir joker karakter değeri yorumlar. Bu kasıtlı olmayan bir işlem olduğundan, bu bölümdeki örnekler veritabanı ve nesne kimliklerini belirlemek için en güvenli yolu göstermektedir.

DECLARE @db_id int;
DECLARE @object_id int;
SET @db_id = DB_ID(N'AdventureWorks2008R2');
SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address');
IF @db_id IS NULL 
  BEGIN;
    PRINT N'Invalid database';
  END;
ELSE IF @object_id IS NULL
  BEGIN;
    PRINT N'Invalid object';
  END;
ELSE
  BEGIN;
    SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL);
  END;
GO

B.Tüm tablolar ve dizinler için bilgi döndüren

Aşağıdaki örnek için tüm tablolar ve dizinler örnek içinde bilgi verir SQL Server.Bu sorguyu yürüttükten görünüm server state izni gerektirir.

SELECT * FROM sys.dm_db_index_operational_stats(NULL, NULL, NULL, NULL);
GO