sys.dm_db_stats_properties (Transact-SQL)

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

Funkce sys.dm_db_stats_properties dynamické správy vrací statistiky pro specifikovaný databázový objekt v aktuální databázi.

Pro rozdělené tabulky viz také podobný sys.dm_db_incremental_stats_properties.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Argumenty

object_id

ID objektu v aktuální databázi. object_id je int.

stats_id

ID statistik pro specifikované object_id. ID statistik můžete získat z pohledu dynamické správy sys.stats . stats_id je int.

Vrácená tabulka

Název sloupce Datový typ Description
object_id int ID objektu (tabulka nebo indexovaný pohled).
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 v tomto článku.
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 je rovna hodnotě vrácené ve sloupci rows .
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 Trvalé procento vzorku použité pro aktualizace statistiky, které explicitně nezadávají procento vzorkování. Pokud je hodnota nula, není pro tuto statistiku nastaveno žádné trvalé procento vzorku.

Platí na: SQL Server 2016 (13.x) SP1 CU4 a novější verze

Poznámky

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

  • object_id nebo stats_id je NULL.
  • Specifikovaný objekt není nalezen 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í při křížové aplikaci na sys.dm_db_stats_properties řádky ve zobrazeních 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 se nečtou žádná data ke generování statistik, objekt blob statistiky se nevytvořil, datum není k dispozici a last_updated sloupec je NULL. Tato podmínka platí pro filtrované statistiky, u kterých predikát nevrací žádné řádky, ani pro nové prázdné tabulky.

Povolení

Potřebujete SELECT oprávnění ke statistickým sloupcům, nebo musíte vlastnit tabulku, nebo být členem sysadmin role pevného serveru, pevné databáze db_owner nebo role pevné databáze db_ddladmin .

Examples

A. Jednoduchý příklad

Následující příklad vrací informace o statistikách tabulky Person.Person v databázi AdventureWorks .

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

B. Vraťte všechny statistické vlastnosti tabulky

Následující příklad vrací vlastnosti všech statistik, které existují pro tabulku 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. Vlastnosti statistik pro často modifikované objekty

Následující příklad vrací všechny tabulky, indexované pohledy a statistiky v aktuální databázi, u kterých byl úvodní sloupec od poslední aktualizace statistiky upraven více než 1 000krát.

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;