sys.dm_db_stats_properties (Transact-SQL)

Şunun için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'teki SQL veritabanı

Dinamik yönetim fonksiyonu, sys.dm_db_stats_properties mevcut veritabanındaki belirtilen veritabanı nesnesi için istatistikleri döndürür.

Bölümlenmiş tablolar için benzer sys.dm_db_incremental_stats_properties'ye de bakınız.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Argümanlar

object_id

Mevcut veritabanındaki nesnenin kimliği. object_id içseldir.

stats_id

Belirtilen object_idiçin istatistiklerin ID'si. İstatistik ID'yi sys.stats dinamik yönetim görünümünden alabilirsiniz. stats_id içseldir.

Tablo geri getirildi

Sütun adı Veri türü Description
object_id int Nesnenin kimliği (tablo veya indeksli görünüm).
stats_id int İstatistik nesnesinin kimliği. Tablo veya dizinli görünüm içinde benzersizdir. Daha fazla bilgi için bkz. sys.stats (Transact-SQL).
last_updated datetime2 İstatistik nesnesinin en son güncellendiği tarih ve saat. Daha fazla bilgi için bu makaledeki Açıklamalar bölümüne bakın.
rows bigint İstatistikler en son güncellendiğinde tablodaki veya indekslenmiş görünümdeki toplam satır sayısı. İstatistikler filtrelenmişse veya filtrelenmiş bir dizine karşılık geliyorsa, satır sayısı tablodaki satır sayısından az olabilir.
rows_sampled bigint İstatistik hesaplamaları için örneklenen toplam satır sayısı.
steps int Histogramdaki adım sayısı. Daha fazla bilgi için bkz. DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Filtre ifadesi uygulanmadan önce tablodaki toplam satır sayısı (filtrelenmiş istatistikler için). İstatistikler filtrelenmezse, unfiltered_rows sütunda geri dönen rows değere eşittir.
modification_counter bigint Istatistiklerin son güncellendiğinden bu yana önde gelen istatistik sütunu (histogramın inşa edildiği sütun) toplam değişiklik sayısı.

Bellek optimize edilmiş tablolar: SQL Server 2016 (13.x) ile başlayacak ve Azure SQL Veritabanı'nda bu sütun, istatistiklerin son güncellendiğinden veya veritabanı yeniden başlatıldığından bu yana tablo için toplam değişiklik sayısını içerir.
persisted_sample_percent float Örnekleme yüzdesini açıkça belirtmeyen istatistik güncelleştirmeleri için kullanılan kalıcı örnek yüzdesi. Değer sıfırsa, bu istatistik için kalıcı örnek yüzdesi ayarlanmamıştır.

Geçerlidir: SQL Server 2016 (13.x) SP1 CU4 ve sonraki sürümler

Açıklamalar

Fonksiyon, sys.dm_db_stats_properties aşağıdaki koşullardan herhangi biri altında boş bir satır kümesi döndürür:

  • object_id veya stats_id şeklindedir NULL.
  • Belirtilen nesne bulunmuyor veya bir tabloya ya da indekslenmiş görünüme karşılık gelmiyor.
  • Belirtilen istatistik ID, belirtilen nesne kimliği için mevcut istatistiklerle örtüşmez.
  • Mevcut kullanıcının istatistik nesnesini görüntüleme iznine sahip değil.

Bu davranış, ve gibi görünümlerdeki sys.dm_db_stats_propertiessys.objectssatırlara çapraz uygulandığında güvenli kullanımını sys.stats sağlar.

İstatistik güncelleştirme tarihi, meta verilerde değil histogram ve yoğunluk vektörüyle birlikte istatistik blob nesnesinde depolanır. İstatistik verileri oluşturmak için hiçbir veri okunmadığında, istatistik blobu oluşturulmaz, tarih kullanılamaz ve last_updated sütun şeklindedir NULL. Bu koşul, önlem satır döndürmeyen filtrelenmiş istatistikler veya yeni boş tablolar için geçerlidir.

Permissions

İstatistik sütunlarında izinlere sahip SELECT olmalısın, ya da tabloya sahip olmalısın, sabit sunucu rolü, sysadmin sabit veritabanı rolünün veya db_owner sabit veritabanı rolünün üyesi db_ddladmin olmalısın.

Examples

A. Basit örnek

Aşağıdaki örnek, Person.Person veritabanındaki tablo için istatistiklerle AdventureWorks ilgili bilgileri geri getirir.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B. Bir tablo için tüm istatistiksel özellikleri döndürün

Aşağıdaki örnek, tablo Sales.SalesOrderDetailiçin var olan tüm istatistiklerin özelliklerini geri getirir.

SELECT 
    OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
    OBJECT_NAME(stat.object_id)        AS table_name,
    sp.stats_id, 
    stat.[name], 
    stat.filter_definition, 
    sp.last_updated, 
    sp.[rows], 
    sp.rows_sampled, 
    sp.steps,
    sp.unfiltered_rows, 
    sp.modification_counter   
FROM sys.stats AS stat   
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')

C. Sıklıkla değiştirilen nesneler için döndürme istatistikleri özellikleri

Aşağıdaki örnek, son istatistik güncellemesinden bu yana ön sütunun 1.000'den fazla kez değiştirildiği mevcut veritabanındaki tüm tabloları, indekslenmiş görünümleri ve istatistikleri geri getirir.

SELECT 
    OBJECT_SCHEMA_NAME(obj.[object_id]) AS schema_name,
    obj.[name],
    stat.[name],
    stat.stats_id, 
    sp.last_updated, 
    sp.modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id  
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE sp.modification_counter > 1000;