Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w Microsoft Fabric
Funkcja sys.dm_db_stats_properties dynamicznego zarządzania zwraca statystyki dla określonego obiektu bazy danych w aktualnej bazie danych.
W przypadku tabel partycjonowanych zobacz także podobną sys.dm_db_incremental_stats_properties.
Składnia
sys.dm_db_stats_properties (object_id, stats_id)
Arguments
object_id
ID obiektu w aktualnej bazie danych.
object_id to int.
stats_id
ID statystyk dla określonego object_id. Identyfikator statystyk możesz pobrać z dynamicznego widoku zarządzania sys.stats .
stats_id to int.
Zwrócona tabela
| Nazwa kolumny | Typ danych | Opis |
|---|---|---|
object_id |
int | ID obiektu (tabela lub widok indeksowany). |
stats_id |
int | Identyfikator obiektu statystyk. Jest unikatowy w widoku tabeli lub indeksowanym. Aby uzyskać więcej informacji, zobacz sys.stats (Transact-SQL). |
last_updated |
datetime2 | Data i godzina ostatniej aktualizacji obiektu statystyk. Aby uzyskać więcej informacji, zobacz sekcję Uwagi w tym artykule. |
rows |
bigint | Łączna liczba wierszy w tabeli lub widoku indeksowanym w momencie ostatniej aktualizacji statystyk. Jeśli statystyki są filtrowane lub odpowiadają indeksowi filtrowanemu, liczba wierszy może być mniejsza niż liczba wierszy w tabeli. |
rows_sampled |
bigint | Łączna liczba wierszy próbkowanych na potrzeby obliczeń statystycznych. |
steps |
int | Liczba kroków w histogramie. Aby uzyskać więcej informacji, zobacz DBCC SHOW_STATISTICS (Transact-SQL). |
unfiltered_rows |
bigint | Całkowita liczba wierszy w tabeli przed zastosowaniem wyrażenia filtrującego (dla statystyk filtrowanych). Jeśli statystyki nie są filtrowane, unfiltered_rows jest równe wartości zwracanej w kolumnie rows . |
modification_counter |
bigint | Łączna liczba modyfikacji wiodącej kolumny statystyk (kolumny, na której zbudowany jest histogram) od ostatniej aktualizacji statystyk. Tabele zoptymalizowane pod pamięć: począwszy od SQL Server 2016 (13.x) i w Azure SQL Database, ta kolumna zawiera: łączną liczbę modyfikacji tabeli od ostatniej aktualizacji statystyk lub ponownego uruchomienia bazy danych. |
persisted_sample_percent |
float | 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 do: SQL Server 2016 (13.x) SP1 CU4 i późniejszych wersji |
Uwagi
Funkcja sys.dm_db_stats_properties zwraca pusty zestaw wierszy pod dowolnymi z następujących warunków:
-
object_idlubstats_idma wartośćNULL. - Określony obiekt nie jest odnaleziony lub nie odpowiada tabeli czy widokowi indeksowanego.
- Określony identyfikator statystyk nie odpowiada istniejącym statystykom dla określonego ID obiektu.
- Obecny użytkownik nie ma uprawnień do przeglądania obiektu statystyk.
To zachowanie pozwala na bezpieczne użycie , sys.dm_db_stats_properties gdy jest stosowane krzyżowo do wierszy w widokach takich jak sys.objects i sys.stats.
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 last_updated to NULL. Ten warunek dotyczy statystyk filtrowanych, dla których predykat nie zwraca żadnych wierszy, ani do nowych pustych tabel.
Permissions
Potrzebujesz SELECT uprawnień do kolumn statystyk, albo musisz być właścicielem tabeli, bądź członkiem stałej sysadmin roli serwera, db_owner stałej bazy danych lub db_ddladmin stałej bazy danych.
Examples
A. Prosty przykład
Poniższy przykład zwraca Person.Person informacje o statystykach dla tabeli AdventureWorks w bazie danych.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Zwróć wszystkie właściwości statystyk dla tabeli
Poniższy przykład zwraca właściwości wszystkich statystyk istniejących dla tabeli Sales.SalesOrderDetail.
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. Właściwości statystyk zwracających dla obiektów często modyfikowanych
Poniższy przykład zwraca wszystkie tabele, zindeksowane widoki i statystyki w aktualnej bazie danych, dla których kolumna wiodąca została zmodyfikowana ponad 1000 razy od ostatniej aktualizacji statystyki.
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;