Aracılığıyla paylaş


sys.dm_db_stats_properties (Transact-SQL)

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

Mevcut SQL Server veritabanındaki belirtilen veritabanı nesnesi (tablo veya indekslenmiş görünüm) için istatistiklerin özelliklerini döndürür. Bölümlenmiş tablolar için benzer sys.dm_db_incremental_stats_properties'a bakınız.

Sözdizimi

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
Mevcut veritabanındaki nesnenin kimliği ve istatistiklerinden birinin özelliklerinin istendiği kimdir. object_idint.

stats_id
Belirtilen object_id için istatistiklerin kimliğidir. İstatistik kimliği sys.stats dinamik yönetim görünümünden alınabilir. stats_idint.

Döndürülen Tablo

Sütun adı Veri türü Description
object_id int İstatistik nesnesinin özelliklerinin döndürüleceği nesnenin kimliği (tablo veya dizinli 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 sayfadaki 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 satır sütunundaki değer döndürüşüne 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üzdesi açıkça belirtilmeyen istatistiksel güncellemeler için kullanılan kalıcı örneklem yüzdesi. Değer sıfırsa, bu istatistik için kalıcı örnek yüzdesi ayarlanmamıştır.

Şunlar için geçerlidir: SQL Server 2016 (13.x) SP1 CU4

Açıklamalar

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 NULL'dur.
  • Belirtilen nesne bulunmaz veya tablo veya indekslenmiş görünüme karşılık gelmez.
  • Belirtilen istatistikler kimliği, belirtilen nesne kimliği için mevcut istatistiklerle örtüşmez.
  • Mevcut kullanıcının istatistikler nesnesini görüntüleme iznine sahip değildir.

Bu davranış, sys.objects ve sys.stats gibi görünümlerdeki satırlara çapraz uygulandığında sys.dm_db_stats_properties'nin güvenli kullanımını 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 veri oluşturmak için veri okunmadığında, istatistik blobu oluşturulmaz, tarih kullanılabilir değildir ve last_updated sütunu NULL olur. Bu, önlemin satır döndürmediği filtrelenmiş istatistikler veya yeni boş tablolar için geçerlidir.

Permissions

Kullanıcının istatistik sütunlarında seçme izinlerine sahip olmasını veya tabloya sahip olmasını ya da sabit sunucu rolü, db_owner sabit veritabanı rolünü veya db_ddladmin sabit veritabanı rolünü bir üyesi sysadmin olmasını gerektirir.

Örnekler

A. Basit örnek

Aşağıdaki örnek, AdventureWorks veritabanındaki Person.Person tablonun istatistiklerini geri getirir.

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

B. Bir tablo için tüm istatistik özelliklerini döndürmek

Aşağıdaki örnek, TEST tablosu için var olan tüm istatistiklerin özelliklerini döndürür.

SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter   
FROM sys.stats AS stat   
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = object_id('TEST');  

C. Sıkça değiştirilen nesneler için istatistiksel özelliklerin geri verilmesi

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

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

Ayrıca Bkz.

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Nesneyle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)