Udostępnij za pośrednictwem


DBCC SHOW_STATISTICS (Transact-SQL)

Dotyczy:programu SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft Fabric

Wyświetla bieżące statystyki optymalizacji zapytań dla tabeli lub widoku indeksowanego. Optymalizator zapytań używa statystyk do oszacowania kardynalności lub liczby wierszy w wyniku zapytania, co umożliwia optymalizatorowi zapytań tworzenie planu zapytań wysokiej jakości. Na przykład optymalizator zapytań może użyć oszacowań kardynalności, aby wybrać operator wyszukiwania indeksu zamiast operatora skanowania indeksu w planie zapytania, poprawiając wydajność zapytań, unikając skanowania indeksu intensywnie korzystającego z zasobów.

Optymalizator zapytań przechowuje statystyki dla tabeli lub widoku indeksowanego w obiekcie statystyk. W przypadku tabeli obiekt statystyk jest tworzony na indeksie lub na liście kolumn tabeli. Obiekt statystyk zawiera nagłówek z metadanymi dotyczącymi statystyk, histogram z rozkładem wartości w pierwszej kolumnie klucza obiektu statystyk oraz wektor gęstości do mierzenia korelacji między kolumnami. Aparat bazy danych może obliczać szacunki kardynalności przy użyciu dowolnego z danych w obiekcie statystyk. Aby uzyskać więcej informacji, zobacz Statystyki i Szacowanie kardynalności (SQL Server).

DBCC SHOW_STATISTICS Wyświetla nagłówek, histogram i wektor gęstości na podstawie danych przechowywanych w obiekcie statystyk. Składnia umożliwia określenie tabeli lub widoku indeksowanego wraz z nazwą indeksu docelowego, nazwą statystyk lub nazwą kolumny.

Ważne aktualizacje w poprzednich wersjach programu SQL Server:

  • Począwszy od programu SQL Server 2012 (11.x) z dodatkiem Service Pack 1, sys.dm_db_stats_properties dynamiczny widok zarządzania jest dostępny do programowego pobierania informacji nagłówka zawartych w obiekcie statystyk dla statystyk niekrementalnych statystyk.

  • Począwszy od programu SQL Server 2014 (12.x) z dodatkiem Service Pack 2 i programu SQL Server 2012 (11.x) z dodatkiem Service Pack 1, sys.dm_db_incremental_stats_properties dynamiczny widok zarządzania jest dostępny do programowego pobierania informacji nagłówka zawartych w obiekcie statystyk dla statystyk przyrostowych.

  • Począwszy od programu SQL Server 2016 (13.x) z dodatkiem Service Pack 1 CU 2, sys.dm_db_stats_histogram dynamiczny widok zarządzania jest dostępny do programowego pobierania informacji histogramu zawartych w obiekcie statystyk.

  • Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.

  • Aby uzyskać więcej informacji na temat statystyk w usłudze Microsoft Fabric, zobacz Statystyki.

Transact-SQL konwencje składni

Składnia

Składnia dla programu SQL Server i usługi Azure SQL Database:

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

Składnia dla usług Azure Synapse Analytics, Analytics Platform System (PDW) i Microsoft Fabric:

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

Argumenty (w programowaniu)

table_or_indexed_view_name

Nazwa tabeli lub widoku indeksowanego, dla którego mają być wyświetlane informacje statystyczne.

table_name

Nazwa tabeli zawierającej statystyki do wyświetlenia. Tabela nie może być tabelą zewnętrzną.

cel

Nazwa indeksu, statystyk lub kolumny, dla której mają być wyświetlane informacje statystyczne. element docelowy jest ujęta w nawiasy kwadratowe, apostrofy, cudzysłowy podwójne lub bez cudzysłowów.

  • Jeśli element docelowy jest nazwą istniejącego indeksu lub statystyk w tabeli lub widoku indeksowanym, zwracane są informacje statystyczne dotyczące tego celu.
  • Jeśli element docelowy to nazwa istniejącej kolumny, a obiekt statystyk utworzony automatycznie w tej kolumnie istnieje, zwracane są informacje o tej automatycznie utworzonej statystyki.

Jeśli automatycznie utworzona statystyka nie istnieje dla elementu docelowego kolumny, zostanie zwrócony komunikat o błędzie 2767.

W usłudze Azure Synapse Analytics and Analytics Platform System (PDW) element docelowy nie może być nazwą kolumny.

W magazynie w usłudze Microsoft Fabric element docelowy może być nazwą statystyk histogramu z jedną kolumną lub kolumną. Jeśli nazwa kolumny jest używana dla elementu docelowego, to polecenie zwraca informacje dotyczące dystrybucji tylko na temat automatycznie wygenerowanej statystyki histogramu. Aby wyświetlić informacje na temat statystyki histogramu utworzonego ręcznie, określ nazwę statystyk jako docelową.

NO_INFOMSGS

Tłumi wszystkie komunikaty informacyjne, które mają poziomy istotności od 0 do 10.

STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM [ , n ]

Określenie co najmniej jednej z tych opcji ogranicza zestawy wyników zwracane przez instrukcję do określonej opcji lub opcji. Jeśli nie określono żadnych opcji, zwracane są wszystkie informacje statystyczne.

STATS_STREAM jest identyfikowany tylko w celach informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.

Zestaw wyników

W poniższej tabeli opisano kolumny zwrócone w zestawie wyników po określeniu STAT_HEADER.

Nazwa kolumny Opis
Nazwa Nazwa obiektu statystyk.
Zaktualizowano Data i godzina ostatniej aktualizacji statystyk. Funkcja STATS_DATE to alternatywny sposób pobierania tych informacji. Aby uzyskać więcej informacji, zobacz sekcję Uwagi na tej stronie.
Wiersze Łączna liczba wierszy w tabeli lub widoku indeksowanym podczas ostatniej aktualizacji statystyk. Jeśli statystyki są filtrowane lub odpowiadają indeksowi filtrowanemu, liczba wierszy może być mniejsza niż liczba wierszy w tabeli. Aby uzyskać więcej informacji, zobacz Statystyka.
Przykładowe wiersze Łączna liczba wierszy próbkowanych na potrzeby obliczeń statystycznych. Jeśli próbkowane wiersze < Wiersze, wyświetlane wyniki histogramu i gęstości są szacowane na podstawie przykładowych wierszy.
Kroki Liczba kroków w histogramie. Każdy krok obejmuje zakres wartości kolumn, po którym następuje górna granica wartości kolumny. Kroki histogramu są definiowane w oparciu o pierwszą kolumnę klucza w statystykach. Maksymalna liczba kroków to 200.
Gęstość Obliczone jako 1/ odrębnych wartości dla wszystkich wartości w pierwszej kolumnie klucza obiektu statystyk, z wyłączeniem wartości granic histogramu. Ta wartość gęstości nie jest używana przez optymalizator zapytań i jest wyświetlana w celu zapewnienia zgodności z poprzednimi wersjami przed programem SQL Server 2008 (10.0.x).
Średnia długość klucza Średnia liczba bajtów na wartość dla wszystkich kolumn kluczy w obiekcie statystyk.
Indeks ciągu Wartość Tak wskazuje, że obiekt statystyk zawiera statystyki podsumowania ciągów w celu poprawy oszacowań kardynalności dla predykatów zapytań korzystających z operatora LIKE; na przykład WHERE ProductName LIKE '%Bike'. Statystyki podsumowania ciągów są przechowywane oddzielnie od histogramu i są tworzone w pierwszej kolumnie klucza obiektu statystyk, gdy jest to typ char, varchar, nchar, nvarchar, varchar(max), nvarchar(max), text lub ntext..
Wyrażenie filtru Predykat dla podzestawu wierszy tabeli zawartych w obiekcie statystyk. NULL = niefiltrowane statystyki. Aby uzyskać więcej informacji na temat filtrowanych predykatów, zobacz Tworzenie filtrowanych indeksów. Aby uzyskać więcej informacji na temat przefiltrowanych statystyk, zobacz Statystyki.
Niefiltrowane wiersze Łączna liczba wierszy w tabeli przed zastosowaniem wyrażenia filtru. Jeśli wyrażenie filtru ma NULLwartość , Unfiltered Rows jest równe Rows.
Procent utrwalonej próbki Utrwalone wartości procentowe próbki używane w przypadku aktualizacji statystyk, które nie określają jawnie wartości procentowej próbkowania. Jeśli wartość jest równa zero, dla tej statystyki nie ustawiono utrwalonej wartości procentowej próbki.

Dotyczy: SQL Server 2016 (13.x) Service Pack 1 CU 4

W poniższej tabeli opisano kolumny zwracane w zestawie wyników po DENSITY_VECTOR określeniu.

Nazwa kolumny Opis
Cała gęstość Gęstość to 1/odrębnych wartości. Wyniki wyświetlają gęstość dla każdego prefiksu kolumn w obiekcie statystyk, jeden wiersz na gęstość. Wartość unikatowa to osobna lista wartości kolumn dla każdego wiersza i każdego prefiksu kolumny. Jeśli na przykład obiekt statystyk zawiera kolumny kluczy (A, B, C), wyniki raportują gęstość odrębnych list wartości w każdym z tych prefiksów kolumn: (A), (A,B) i (A, B, C). Przy użyciu prefiksu (A, B, C), każda z tych list jest odrębną listą wartości: (3, 5, 6), (4, 4, 6), (4, 5, 6), (4, 5, 7). Używając prefiksu (A, B), te same wartości kolumn mają te odrębne listy wartości: (3, 5), (4, 4, 4) i (4, 5)
Średnia długość Średnia długość w bajtach do przechowywania listy wartości kolumn dla prefiksu kolumny. Jeśli na przykład wartości na liście (3, 5, 6) wymagają 4 bajtów, długość wynosi 12 bajtów.
Kolumny Nazwy kolumn w prefiksie, dla których wyświetlana jest cała gęstość i średnia długość.

W poniższej tabeli opisano kolumny zwracane w zestawie wyników po określeniu HISTOGRAM opcji.

Nazwa kolumny Opis
RANGE_HI_KEY Górna wartość granicy kolumny dla kroku histogramu. Wartość kolumny jest również nazywana wartością klucza.
RANGE_ROWS Szacowana liczba wierszy, których wartość kolumny mieści się w kroku histogramu, z wyłączeniem górnej granicy.
EQ_ROWS Szacowana liczba wierszy, których wartość kolumny jest równa górnej wartości kroku histogramu.
DISTINCT_RANGE_ROWS Szacowana liczba wierszy z unikatową wartością kolumny w kroku histogramu, z wyłączeniem górnej granicy.
AVG_RANGE_ROWS Średnia liczba wierszy z zduplikowanymi wartościami kolumn w kroku histogramu, z wyłączeniem górnej granicy. Gdy DISTINCT_RANGE_ROWS wartość jest większa niż 0, AVG_RANGE_ROWS jest obliczana przez podzielenie przez DISTINCT_RANGE_ROWSRANGE_ROWS wartość . Gdy DISTINCT_RANGE_ROWS wartość to 0, AVG_RANGE_ROWS zwraca wartość 1 dla kroku histogramu.

Uwagi

Data aktualizacji statystyk jest przechowywana w obiekcie blob statystyk wraz z histogramem i wektorem gęstości, a nie w metadanych. Jeśli żadne dane nie są odczytywane w celu wygenerowania danych statystyk, obiekt blob statystyk nie jest tworzony, data jest niedostępna, a kolumna updated to NULL. Jest to przypadek dla przefiltrowanych statystyk, dla których predykat nie zwraca żadnych wierszy ani dla nowych pustych tabel.

Histogram

Histogram mierzy częstotliwość występowania dla każdej odrębnej wartości w zestawie danych. Optymalizator zapytań oblicza histogram na wartościach kolumn w pierwszej kolumnie klucza obiektu statystyk, wybierając wartości kolumn, statystycznie próbkując wiersze lub wykonując pełne skanowanie wszystkich wierszy w tabeli lub widoku. Jeśli histogram jest tworzony na podstawie próbkowanego zestawu wierszy, przechowywane sumy dla liczby wierszy i liczby unikatowych wartości są szacowane i nie muszą być liczbami całkowitymi.

Aby utworzyć histogram, optymalizator zapytań sortuje wartości kolumn, oblicza liczbę wartości, które pasują do każdej odrębnej wartości kolumny, a następnie agreguje wartości kolumn w maksymalnie 200 ciągłych kroków histogramu. Każdy krok zawiera zakres wartości kolumn, po którym następuje górna wartość kolumny powiązanej. Zakres zawiera wszystkie możliwe wartości kolumn między wartościami granic, z wyłączeniem samych wartości granic. Najniższa z posortowanych wartości kolumn to górna wartość granicy pierwszego kroku histogramu.

Na poniższym diagramie przedstawiono histogram z sześcioma krokami. Obszar po lewej stronie pierwszej górnej wartości granicy jest pierwszym krokiem.

Diagram przedstawiający sposób obliczania histogramu na podstawie przykładowych wartości kolumn.

Dla każdego kroku histogramu:

  • Linia pogrubiona reprezentuje górną wartość granicy (RANGE_HI_KEY) i liczbę wystąpień (EQ_ROWS)
  • Pełny obszar po lewej stronie RANGE_HI_KEY reprezentuje zakres wartości kolumn, a średnia liczba wystąpień każdej wartości kolumny (AVG_RANGE_ROWS). AVG_RANGE_ROWS pierwszego kroku histogramu jest zawsze 0.
  • Wiersze kropkowane reprezentują próbkowane wartości używane do szacowania całkowitej liczby odrębnych wartości w zakresie (DISTINCT_RANGE_ROWS) i łącznej liczby wartości w zakresie (RANGE_ROWS). Optymalizator zapytań używa RANGE_ROWS i DISTINCT_RANGE_ROWS do obliczania AVG_RANGE_ROWS i nie przechowuje przykładowych wartości.

Optymalizator zapytań definiuje kroki histogramu zgodnie z ich istotnością statystyczną. Używa maksymalnego algorytmu różnicy, aby zminimalizować liczbę kroków w histogramie, jednocześnie maksymalizując różnicę między wartościami granic. Maksymalna liczba kroków to 200. Liczba kroków histogramu może być mniejsza niż liczba unikatowych wartości, nawet w przypadku kolumn z mniej niż 200 punktami granic. Na przykład kolumna z 100 odrębnymi wartościami może zawierać histogram z mniej niż 100 punktami granic.

Wektor gęstości

Optymalizator zapytań używa gęstości w celu zwiększenia oszacowań kardynalności zapytań, które zwracają wiele kolumn z tej samej tabeli lub widoku indeksowanego. Wektor gęstości zawiera jedną gęstość dla każdego prefiksu kolumn w obiekcie statystyk. Jeśli na przykład obiekt statystyki zawiera kolumny kluczy CustomerId, ItemId i Price, gęstość jest obliczana dla każdego z następujących prefiksów kolumny.

Prefiks kolumny Gęstość obliczona na
(CustomerId) Wiersze z pasującymi wartościami dla CustomerId
(CustomerId, ItemId) Wiersze z pasującymi wartościami dla CustomerId i ItemId
(CustomerId, ItemId, Price) Wiersze z pasującymi wartościami dla CustomerId, ItemIdi Price

Ograniczenia

DBCC SHOW_STATISTICS nie udostępnia statystyk dla indeksów przestrzennych ani indeksów magazynu kolumn zoptymalizowanych pod kątem pamięci.

Uprawnienia dla programu SQL Server i usługi SQL Database

Aby wyświetlić obiekt statystyk, użytkownik musi mieć SELECT uprawnienia do tabeli.

Istnieją następujące wymagania, aby SELECT uprawnienia wystarczyły do uruchomienia polecenia:

  • Użytkownicy muszą mieć uprawnienia do wszystkich kolumn w obiekcie statystyk.
  • Użytkownicy muszą mieć uprawnienia do wszystkich kolumn w warunku filtru (jeśli istnieje).
  • Tabela nie może mieć zasad zabezpieczeń na poziomie wiersza.
  • Jeśli którakolwiek z kolumn w obiekcie statystyk jest maskowana przy użyciu reguł dynamicznego maskowania danych, oprócz SELECT uprawnień, użytkownik musi mieć UNMASK uprawnienie lub być członkiem roli db_ddladmin .

W wersjach wcześniejszych niż dodatek Service Pack 1 programu SQL Server 2012 (11.x) użytkownik musi być właścicielem tabeli lub użytkownik musi być członkiem stałej roli serwera sysadmin , db_owner stałej roli bazy danych lub stałej roli bazy danych db_ddladmin stałej roli bazy danych. Aby zmienić zachowanie przed programem SQL Server 2012 (11.x) z dodatkiem Service Pack 1, użyj flagi śledzenia 9485.

Uprawnienia do usługi Microsoft Fabric Data Warehouse i punktu końcowego analizy SQL

Aby wyświetlić obiekt statystyk w usłudze Fabric Data Warehouse lub punkt końcowy analizy SQL, użytkownik musi mieć SELECT uprawnienia do tabeli lub członka roli obszaru roboczego Viewer Fabric lub wyższej roli.

Uprawnienia dla usługi Azure Synapse Analytics i systemu platformy analizy (PDW)

DBCC SHOW_STATISTICS wymaga SELECT uprawnień do tabeli lub członkostwa w stałej roli serwera sysadmin , db_owner stałej roli bazy danych lub stałej roli db_ddladmin stałej bazy danych.

Ograniczenia i ograniczenia dotyczące usług Azure Synapse Analytics i Analytics Platform System (PDW)

DBCC SHOW_STATISTICS wyświetla statystyki przechowywane w Shell bazie danych na poziomie węzła sterowania. Nie pokazuje statystyk, które są automatycznie tworzone przez program SQL Server w węzłach obliczeniowych.

DBCC SHOW_STATISTICS nie jest obsługiwana w tabelach zewnętrznych.

W usłudze Microsoft Fabric DBCC SHOW_STATISTICS wyświetlane są tylko wyniki statystyk histogramu, a nie ACE-* statystyk.

Przykłady: SQL Server i Azure SQL Database

Odp. Zwracanie wszystkich informacji statystycznych

Poniższy przykład przedstawia wszystkie informacje statystyczne dotyczące AK_Address_rowguid indeksu Person.Address tabeli w bazie danych AdventureWorks2022.

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

B. Określ opcję HISTOGRAM

Ogranicza to informacje statystyczne wyświetlane dla Customer_LastName danych HISTOGRAM.

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Wyświetlanie zawartości jednego obiektu statystyk

Poniższy przykład tworzy obiekt statystyk, a następnie wyświetla zawartość Customer_LastName statystyk w DimCustomer tabeli w przykładowej bazie danych AdventureWorksPDW2022 .

-- 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

Wyniki pokazują nagłówek, wektor gęstości i część histogramu.

Zrzut ekranu przedstawiający wyniki SHOW_STATISTICS DBCC.