Aracılığıyla paylaş


DBCC SHOW_STATISTICS (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Tablo veya dizinli görünüm için geçerli sorgu iyileştirme istatistiklerini görüntüler. Sorgu iyileştiricisi, sorgu sonucundaki kardinaliteyi veya satır sayısını tahmin etmek için istatistikleri kullanır ve bu da Sorgu İyileştiricisi'nin yüksek kaliteli bir sorgu planı oluşturmasını sağlar. Örneğin, Sorgu İyileştiricisi kardinalite tahminlerini kullanarak sorgu planındaki dizin tarama işleci yerine dizin arama işlecini seçebilir ve yoğun kaynak kullanan dizin taramasını önleyerek sorgu performansını iyileştirir.

Sorgu İyileştiricisi, bir tablo veya dizine alınan görünümün istatistiklerini istatistik nesnesinde depolar. Bir tablo için istatistik nesnesi bir dizinde veya tablo sütunları listesinde oluşturulur. İstatistik nesnesi istatistikler hakkındaki meta verileri içeren bir üst bilgi, istatistik nesnesinin ilk anahtar sütunundaki değerlerin dağılımını içeren bir histogram ve çapraz sütun bağıntısını ölçmek için bir yoğunluk vektörü içerir. Veritabanı Altyapısı, istatistik nesnesindeki tüm verilerle kardinalite tahminlerini hesaplayabilir. Daha fazla bilgi için bkz. İstatistikler ve Kardinalite Tahmini (SQL Server).

DBCC SHOW_STATISTICS istatistik nesnesinde depolanan verilere göre üst bilgi, histogram ve yoğunluk vektörünü görüntüler. Söz dizimi, hedef dizin adı, istatistik adı veya sütun adıyla birlikte bir tablo veya dizinlenmiş görünüm belirtmenize olanak tanır.

SQL Server'ın geçmiş sürümlerindeki önemli güncelleştirmeler:

  • SQL Server 2012 (11.x) Service Pack 1'den başlayarak, sys.dm_db_stats_properties dinamik yönetim görünümü artımlı olmayan istatistikler için istatistik nesnesinde yer alan üst bilgi bilgilerini program aracılığıyla almak için kullanılabilir.

  • SQL Server 2014 (12.x) Service Pack 2 ve SQL Server 2012 (11.x) Service Pack 1'den başlayarak, sys.dm_db_incremental_stats_properties dinamik yönetim görünümü artımlı istatistikler için istatistik nesnesinde yer alan üst bilgi bilgilerini program aracılığıyla almak için kullanılabilir.

  • SQL Server 2016 (13.x) Service Pack 1 CU 2'den başlayarak, sys.dm_db_stats_histogram dinamik yönetim görünümü istatistik nesnesinde yer alan histogram bilgilerini program aracılığıyla almak için kullanılabilir.

  • Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

  • Microsoft Fabric Veri Ambarı'ndaki istatistikler hakkında daha fazla bilgi için bkz. İstatistikler.

Transact-SQL söz dizimi kuralları

Sözdizimi

Dokuda SQL Server, Azure SQL Veritabanı ve SQL veritabanı söz dizimi:

DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , ...n ] ]
< option > ::=
    STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
[ ; ]

Microsoft Fabric'te Azure Synapse Analytics, Analytics Platform Sistemi (PDW) ve Warehouse söz dizimi:

DBCC SHOW_STATISTICS ( table_name , target )
    [ WITH { STAT_HEADER | DENSITY_VECTOR | HISTOGRAM } [ , ...n ] ]
[ ; ]

Tartışmalar

table_or_indexed_view_name

İstatistik bilgilerinin görüntüleneceği tablonun veya dizine alınan görünümün adı.

table_name

Görüntülenecek istatistikleri içeren tablonun adı. Tablo dış tablo olamaz.

hedef

İstatistik bilgilerinin görüntüleneceği dizinin, istatistiklerin veya sütunun adı. hedef köşeli ayraç, tek tırnak, çift tırnak içine alınır veya tırnak içine alınmaz.

  • Hedef, varolan bir dizinin adıysa veya tablo veya dizinli görünümdeki istatistiklerse, bu hedefle ilgili istatistik bilgileri döndürülür.
  • Hedef mevcut bir sütunun adıysa ve bu sütunda otomatik olarak oluşturulan bir istatistik nesnesi varsa, otomatik oluşturulan istatistik hakkındaki bilgiler döndürülür.

Sütun hedefi için otomatik olarak oluşturulan bir istatistik yoksa, hata iletisi 2767 döndürülür.

Azure Synapse Analytics ve Analytics Platform Sistemi'nde (PDW), hedef bir sütun adı olamaz.

Microsoft Fabric'teki Ambar'da hedef , tek sütunlu histogram istatistiklerinin veya sütunun adı olabilir. Hedef için bir sütun adı kullanılıyorsa, bu komut yalnızca otomatik olarak oluşturulan histogram istatistiği hakkında dağıtım bilgilerini döndürür. El ile oluşturulan histogram istatistiği hakkındaki bilgileri görüntülemek için istatistik adını hedef olarak belirtin.

NO_INFOMSGS

Önem düzeyi 0 ile 10 arasında olan tüm bilgilendirme iletilerini gizler.

STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM [ , n ]

Bu seçeneklerden birinin veya daha fazlasının belirtilmesi, deyimi tarafından döndürülen sonuç kümelerini belirtilen seçenek veya seçeneklerle sınırlar. Hiçbir seçenek belirtilmezse, tüm istatistik bilgileri döndürülür.

STATS_STREAM yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

Sonuç kümesi

Aşağıdaki tabloda, STAT_HEADER belirtildiğinde sonuç kümesinde döndürülen sütunlar açıklanmaktadır.

Sütun adı Açıklama
İsim İstatistik nesnesinin adı.
Güncelleştirildi İstatistiklerin son güncelleştirildiği tarih ve saat. STATS_DATE işlevi, bu bilgileri almak için alternatif bir yoldur. Daha fazla bilgi için bu sayfadaki Açıklamalar bölümüne bakın.
Satır İstatistikler son güncelleştirildiğinde tablodaki veya dizine alınan 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. Daha fazla bilgi için bkz. İstatistikler.
Örneklenen Satırlar İstatistik hesaplamaları için örneklenen toplam satır sayısı. "Örneklenen Satır Sayısı < ise, görüntülenen histogram ve yoğunluk sonuçları örneklenen satıra göre tahmin edilir."
Adımlar Histogramdaki adım sayısı. Her adım, bir sütun değerleri aralığını ve ardından gelen bir üst sınır sütun değerini kapsar. Histogram adımları, istatistiklerdeki ilk anahtar sütununda tanımlanır. Adım sayısı üst sınırı 200'dür.
Yoğunluk histogram sınır değerleri hariç istatistik nesnesinin ilk anahtar sütunundaki tüm değerler için 1 / ayrı değerler olarak hesaplanır. Bu Yoğunluk değeri Sorgu İyileştiricisi tarafından kullanılmaz ve SQL Server 2008 (10.0.x) öncesi sürümlerle geriye dönük uyumluluk için görüntülenir.
Ortalama Anahtar Uzunluğu İstatistik nesnesindeki tüm anahtar sütunlar için değer başına ortalama bayt sayısı.
Dize Dizini Evet, like işlecini kullanan sorgu koşullarının kardinalite tahminlerini geliştirmek için istatistik nesnesinin dize özet istatistikleri içerdiğini gösterir; örneğin, WHERE ProductName LIKE '%Bike'. Dize özeti istatistikleri histogramdan ayrı olarak depolanır ve char, varchar, nchar, nvarchar, varchar(max), nvarchar(max), nvarchar(max), text veya ntext.. türünde olduğunda istatistik nesnesinin ilk anahtar sütununda oluşturulur.
Filtre İfadesi İstatistik nesnesine dahil edilen tablo satırlarının alt kümesi için koşul. NULL = filtrelenmemiş istatistikler. Filtrelenmiş koşul hakkında daha fazla bilgi için bkz. Filtrelenmiş dizinler oluşturma. Filtrelenmiş istatistikler hakkında daha fazla bilgi için bkz. İstatistikler.
Filtrelenmemiş Satırlar Filtre ifadesini uygulamadan önce tablodaki toplam satır sayısı. Filtre İfadesi ise NULLeşittir Unfiltered RowsRows.
Kalıcı Örnek Yüzdesi Ö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.

Şunlar için geçerlidir: SQL Server 2016 (13.x) Service Pack 1 CU 4

Aşağıdaki tabloda, belirtildiğinde DENSITY_VECTOR sonuç kümesinde döndürülen sütunlar açıklanmaktadır.

Sütun adı Açıklama
Tüm Yoğunluk Yoğunluk, 1 / farklı değerlerinhalidir. Sonuçlar, istatistik nesnesindeki her sütun ön eki için yoğunluk başına bir satır olacak şekilde yoğunluğu görüntüler. Ayrı bir değer, satır başına ve sütun başına önek başına sütun değerlerinin ayrı bir listesidir. Örneğin, istatistik nesnesi anahtar sütunlar (A, B, C) içeriyorsa, sonuçlar şu sütun ön eklerinin her birinde bulunan ayrı değer listelerinin yoğunluğuna göre rapor eder: (A), (A,B) ve (A, B, C). Ön ekini (A, B, C) kullanarak bu listelerin her biri ayrı bir değer listesidir: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Ön ekini kullanarak (A, B) aynı sütun değerleri şu benzersiz değer listelerine sahiptir: (3, 5), (4, 4) ve (4, 5)
Ortalama Uzunluk Sütun ön eki için sütun değerlerinin listesini depolamak için bayt cinsinden ortalama uzunluk. Örneğin, listedeki değerlerin (3, 5, 6) her biri 4 bayt gerektiriyorsa uzunluk 12 bayttır.
Kolonlar Tüm yoğunluk ve Ortalama uzunluğun görüntülendiği ön ekteki sütunların adları.

Aşağıdaki tabloda, seçenek belirtildiğinde sonuç kümesinde HISTOGRAM döndürülen sütunlar açıklanmaktadır.

Sütun adı Açıklama
RANGE_HI_KEY Histogram adımı için üst sınır sütun değeri. Sütun değeri, anahtar değer olarak da adlandırılır.
RANGE_ROWS Histogram adımının kapsamına giren ve üst sınır dahil olmayan sütun değerine sahip tahmini satır sayısı.
EQ_ROWS Histogram adımının üst sınırına eşit olan sütun değerine sahip tahmini satır sayısı.
DISTINCT_RANGE_ROWS Histogram adımında, üst sınır hariç ayrı sütun değerine sahip tahmini satır sayısı.
AVG_RANGE_ROWS Bir histogram adımında, üst sınır hariç, yinelenen sütun değerlerine sahip ortalama satır sayısı. 0'dan büyük olduğunda DISTINCT_RANGE_ROWS , AVG_RANGE_ROWS ile bölünerek RANGE_ROWSDISTINCT_RANGE_ROWShesaplanır. 0 olduğunda DISTINCT_RANGE_ROWS histogram AVG_RANGE_ROWS adımı için 1 döndürür.

Açıklamalar

İ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 updated sütun şeklindedir NULL. Koşulun satır döndürmediği filtrelenmiş istatistikler veya yeni boş tablolar için bu durum söz konusudur.

Histogram Grafiği

Histogram, bir veri kümesindeki her ayrı değer için oluşum sıklığını ölçer. Sorgu iyileştiricisi, istatistik nesnesinin ilk anahtar sütunundaki sütun değerleri üzerinde bir histogram hesaplar, satırlarda istatistiksel örnekleme yaparak veya tablodaki veya görünümdeki tüm satırların tam taramasını yaparak sütun değerlerini seçer. Histogram örneklenmiş bir satır kümesinden oluşturulduysa, satır sayısı ve ayrı değer sayısı için depolanan toplamlar tahmindir ve tamsayı olması gerekmez.

Histogramı oluşturmak için sorgu iyileştiricisi sütun değerlerini sıralar, her ayrı sütun değeriyle eşleşen değerlerin sayısını hesaplar ve sonra sütun değerlerini en fazla 200 bitişik histogram adımında toplar. Her adım, bir sütun değerleri aralığı ve ardından bir üst sınır sütun değeri içerir. Aralık, sınır değerlerinin kendileri hariç olmak üzere, sınır değerleri arasında yer alan tüm olası sütun değerlerini içerir. Sıralanmış sütun değerlerinin en alt kısmı, ilk histogram adımının üst sınır değeridir.

Aşağıdaki diyagramda altı adımlı bir histogram gösterilmektedir. İlk üst sınır değerinin solundaki alan ilk adımdır.

Örneklenen sütun değerlerinden histogramın nasıl hesaplanmış olduğunu gösteren diyagram.

Her histogram adımı için:

  • Kalın çizgi üst sınır değerini (RANGE_HI_KEY) ve oluşma sayısını (EQ_ROWS) temsil eder
  • RANGE_HI_KEY'nin düz alanı, sütun değerleri aralığını ve her sütun değerinin ortalama kaç kez oluştuğuna (AVG_RANGE_ROWS) sahiptir. İlk histogram adımının AVG_RANGE_ROWS her zaman 0'dır.
  • Noktalı çizgiler, aralıktaki benzersiz değerlerin toplam sayısını (DISTINCT_RANGE_ROWS) ve aralıktaki toplam değer sayısını (RANGE_ROWS) tahmin etmek için kullanılan örneklenmiş değerleri temsil eder. Sorgu iyileştiricisi, AVG_RANGE_ROWS hesaplamak için RANGE_ROWS ve DISTINCT_RANGE_ROWS kullanır ve örneklenen değerleri depolamaz.

Sorgu iyileştiricisi histogram adımlarını istatistiksel anlamlarına göre tanımlar. Sınır değerleri arasındaki farkı en üst düzeye çıkarırken histogramdaki adım sayısını en aza indirmek için maksimum fark algoritması kullanır. Adım sayısı üst sınırı 200'dür. Histogram adımlarının sayısı, 200'den az sınır noktasına sahip sütunlar için bile farklı değerlerin sayısından daha az olabilir. Örneğin, 100 ayrı değeri olan bir sütunda 100'den az sınır noktası içeren bir histogram olabilir.

Yoğunluk vektöru

Sorgu iyileştiricisi, aynı tablodan veya dizine alınan görünümden birden çok sütun döndüren sorgular için kardinalite tahminlerini geliştirmek için yoğunlukları kullanır. Yoğunluk vektöru, istatistik nesnesindeki her sütun ön eki için bir yoğunluk içerir. Örneğin, bir istatistik nesnesinin anahtar sütunları CustomerIdItemId varsa ve Priceyoğunluk aşağıdaki sütun ön eklerinin her birinde hesaplanır.

Sütun ön eki Yoğunluk hesaplandı
(CustomerId) için eşleşen değerlere sahip satırlar CustomerId
(CustomerId, ItemId) CustomerId ve ItemId için eşleşen değerlere sahip satırlar
(CustomerId, ItemId, Price) CustomerId, ItemId, ve Price için eşleşen değerlere sahip satırlar

Sınırlamalar

DBCC SHOW_STATISTICS uzamsal dizinler veya bellek için iyileştirilmiş columnstore dizinleri için istatistik sağlamaz.

SQL Server ve SQL Veritabanı için izinler

İstatistik nesnesini görüntülemek için kullanıcının tabloda izni olmalıdır SELECT .

İzinlerin komutu çalıştırmak için yeterli olması için SELECT aşağıdaki gereksinimler vardır:

  • Kullanıcıların istatistik nesnesindeki tüm sütunlarda izinleri olmalıdır.
  • Kullanıcıların filtre koşulundaki tüm sütunlar üzerinde izni olmalıdır (varsa).
  • Tabloda satır düzeyi güvenlik ilkesi olamaz.
  • İstatistik nesnesi içindeki sütunlardan herhangi biri Dinamik Veri Maskeleme kurallarıyla maskelenmişse, izinlere SELECT ek olarak kullanıcının da izni olması UNMASK veya db_ddladmin rolünün üyesi olması gerekir.

SQL Server 2012 (11.x) Service Pack 1'in önceki sürümlerinde, kullanıcının tabloya sahip olması veya kullanıcının sysadmin sabit sunucu rolünün, db_owner sabit veritabanı rolünün veya db_ddladmin sabit veritabanı rolünün üyesi olması gerekir. Davranışı sql server 2012 (11.x) öncesi Hizmet Paketi 1 davranışına geri döndürmek için izleme bayrağı 9485'i kullanın.

Microsoft Fabric Veri Ambarı ve SQL analiz uç noktası için izinler

Doku Veri Ambarı'nda veya SQL analiz uç noktasında istatistik nesnesini görüntülemek için, kullanıcının tabloda veya Viewer Fabric çalışma alanı rolünün veya daha yüksek rol üyeliğinin bir üyesine sahip SELECT olması gerekir.

Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) için izinler

DBCC SHOW_STATISTICS SELECT sysadmin sabit sunucu rolü, db_owner sabit veritabanı rolü veya db_ddladminsabit veritabanı rolündeki tablo veya üyelik üzerinde izin gerektirir.

Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) için Sınırlamalar ve Kısıtlamalar

DBCC SHOW_STATISTICS , Denetim düğümü düzeyinde veritabanında depolanan Shell istatistikleri gösterir. İşlem düğümlerinde SQL Server tarafından otomatik oluşturulan istatistikleri göstermez.

DBCC SHOW_STATISTICS dış tablolarda desteklenmez.

Microsoft Fabric'teki Ambar'da istatistikleri DBCC SHOW_STATISTICS değil ACE-* yalnızca histogram istatistiklerinin sonuçlarını gösterir.

Örnekler: SQL Server , Azure SQL Veritabanı ve Dokuda SQL veritabanı

A. Tüm istatistik bilgilerini döndürme

Aşağıdaki örnek, AdventureWorks2025 veritabanındaki tablonun Person.Address indeksine ait tüm istatistikleri gösterirAK_Address_rowguid.

DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
GO

B. HISTOGRAM seçeneğini belirtin

Bu, için görüntülenen Customer_LastName istatistik bilgilerini HISTOGRAM verileriyle sınırlar.

DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName) WITH HISTOGRAM;
GO

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

C. Bir istatistik nesnesinin içeriğini görüntüleme

Aşağıdaki örnek bir istatistik nesnesi oluşturur ve ardından Customer_LastName örnek veritabanındaki tablodaki DimCustomer istatistiklerin içeriğini görüntüler.

-- Uses AdventureWorksPDW
--First, create a statistics object
CREATE STATISTICS Customer_LastName
ON AdventureWorksPDW2012.dbo.DimCustomer (LastName);
GO
DBCC SHOW_STATISTICS ("dbo.DimCustomer", Customer_LastName);
GO

Sonuçlar üst bilgiyi, yoğunluk vektörünü ve histogramın bir bölümünü gösterir.

DBCC SHOW_STATISTICS sonuçlarını gösteren ekran görüntüsü.