Sdílet prostřednictvím


sys.dm_db_stats_properties (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací vlastnosti statistik pro specifikovaný databázový objekt (tabulku nebo indexovaný pohled) v aktuální databázi SQL Serveru. Pro rozdělené tabulky viz podobná sys.dm_db_incremental_stats_properties.

Syntaxe

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
je ID objektu v aktuální databázi, pro který jsou požadovány vlastnosti jedné z jejích statistik. object_id je int.

stats_id
Je ID statistik pro daný object_id. ID statistiky lze získat ze zobrazení dynamické správy sys.stats . stats_id je int.

Vrácená tabulka

Název sloupce Datový typ Description
object_id int ID objektu (tabulky nebo indexovaného zobrazení), pro který se mají vrátit vlastnosti objektu statistiky.
stats_id int ID objektu statistiky. Je jedinečný v rámci tabulky nebo indexovaného zobrazení. Další informace naleznete v tématu sys.stats (Transact-SQL).
last_updated datetime2 Datum a čas, kdy byl objekt statistik naposledy aktualizován. Další informace najdete v části Poznámky na této stránce.
rows bigint Celkový počet řádků v tabulce nebo indexovaném zobrazení při poslední aktualizaci statistik. Pokud jsou statistiky filtrované nebo odpovídají filtrovanému indexu, může být počet řádků menší než počet řádků v tabulce.
rows_sampled bigint Celkový počet řádků vzorkovaných pro výpočty statistik.
steps int Počet kroků v histogramu Další informace naleznete v tématu DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Celkový počet řádků v tabulce před aplikací filtračního výrazu (pro filtrované statistiky). Pokud statistiky nejsou filtrovány, unfiltered_rows se rovná hodnotám vráceným ve sloupci řádků.
modification_counter bigint Celkový počet úprav pro vedoucí sloupec statistik (sloupec, na kterém je histogram postaven) od poslední aktualizace statistik.

Tabulky optimalizované pro paměť: od SQL Server 2016 (13.x) a v Azure SQL Database tento sloupec obsahuje: celkový počet úprav tabulky od poslední aktualizace statistik nebo restartu databáze.
persisted_sample_percent float Procento trvalého vzorku používané pro aktualizace statistik, které explicitně nespecifikují procento výběru. Pokud je hodnota nula, není pro tuto statistiku nastaveno žádné trvalé procento vzorku.

Platí na: SQL Server 2016 (13.x) SP1 CU4

Poznámky

sys.dm_db_stats_properties vrátí prázdnou sadu řádků za kterékoliv z následujících podmínek:

  • object_id nebo stats_id je NULL.
  • Specifikovaný objekt se nenachází nebo neodpovídá tabulce či indexovanému pohledu.
  • Specifikované ID statistik neodpovídá existujícím statistikám pro specifikované ID objektu.
  • Současný uživatel nemá oprávnění zobrazit objekt statistiky.

Toto chování umožňuje bezpečné použití sys.dm_db_stats_properties při křížové aplikaci na řádky v pohledech jako sys.objects a sys.stats.

Datum aktualizace statistiky je uloženo v objektu blob statistiky statistiky společně s histogramem a vektor hustoty, ne v metadatech. Pokud nejsou data čtena k generování statistických dat, statistická blob se nevytvoří, datum není dostupné a sloupec last_updated je NULL. To platí pro filtrované statistiky, u kterých predikát nevrací žádné řádky, nebo pro nové prázdné tabulky.

Povolení

Vyžaduje, aby uživatel měl oprávnění k výběru ve sloupcích statistik, nebo aby vlastnil tabulku, nebo aby byl členem sysadmin role pevného serveru, db_owner role pevné databáze nebo db_ddladmin role pevné databáze.

Examples

A. Jednoduchý příklad

Následující příklad vrací statistiky tabulky Person.Person v databázi AdventureWorks.

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

B. Vrácení všech vlastností statistiky pro tabulku

Následující příklad vrací vlastnosti všech statistik, které existují pro tabulku TEST.

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. Vrácení vlastností statistiky pro často modifikované objekty

Následující příklad vrací všechny tabulky, indexované pohledy a statistiky v aktuální databázi, pro které byl vedoucí sloupec od poslední aktualizace statistik upraven více než 1000krát.

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;  

Viz také

SHOW_STATISTICS DBCC (Transact-SQL)
sys.stats (Transact-SQL)
Zobrazení a funkce dynamické správy související s objekty (Transact-SQL)
zobrazení a funkce dynamické správy (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)