sys.dm_db_stats_properties (Transact-SQL)

A következőre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-adatbázis a Microsoft Fabric rendszerben

A sys.dm_db_stats_properties dinamikus menedzsment függvény a megadott adatbázisobjektum statisztikáit adja vissza a jelenlegi adatbázisban.

A partíciós táblák esetében lásd a hasonló sys.dm_db_incremental_stats_properties is.

Syntax

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id

Az objektum azonosítója a jelenlegi adatbázisban. object_id az int.

stats_id

A megadott object_idstatisztikák azonosítója . A statisztikai azonosítót a sys.stats dinamikus menedzsment nézetből lehet megszerezni. stats_id az int.

Visszaadott tábla

Oszlop neve Adattípus Leírás
object_id int Az objektum azonosítója (tábla vagy indexelt nézet).
stats_id int A statisztikai objektum azonosítója. A tábla vagy az indexelt nézet egyedi. További információ: sys.stats (Transact-SQL).
last_updated datetime2 A statisztikai objektum utolsó frissítésének dátuma és időpontja. További információt a jelen cikk Megjegyzések szakaszában talál.
rows bigint A táblázatban vagy az indexelt nézetben szereplő sorok teljes száma, amikor a statisztikákat utoljára frissítették. Ha a statisztikák szűrve vannak, vagy egy szűrt indexnek felelnek meg, a sorok száma kisebb lehet, mint a tábla sorainak száma.
rows_sampled bigint Statisztikai számításokhoz mintavételezett sorok teljes száma.
steps int A hisztogram lépéseinek száma. További információ: DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint A táblázatban lévő sorok összessége a szűrőkifejezés alkalmazása előtt (szűrt statisztikák esetén). Ha a statisztikákat nem szűrik, unfiltered_rows akkor megegyezik az oszlopban visszaadott rows értékkel.
modification_counter bigint A vezető statisztikai oszlop (az oszlop, amelyen a hisztográfia épül) összes módosítása az utolsó statisztika frissítése óta.

Memóriára optimalizált táblák: az SQL Server 2016-tól (13.x) kezdve, és Azure SQL Database-ben ez az oszlop tartalmazza: a táblázat összes módosításának számát azóta, hogy legutóbb a statisztikák frissültek vagy újraindították az adatbázist.
persisted_sample_percent float A statisztikai frissítésekhez használt, a mintavételezési százalékot nem explicit módon meg nem határozó statisztikai frissítésekhez használt megmaradó minta százalékos aránya. Ha az érték nulla, akkor nincs megőrzött minta százalékos értéke ehhez a statisztikai adathoz.

Érvényes: SQL Server 2016 (13.x) SP1 CU4 és újabb verziók

Megjegyzések

A sys.dm_db_stats_properties függvény üres sorhalmazt ad vissza bármelyik alábbi feltétel esetén:

  • object_id vagy stats_id az NULL.
  • A megadott objektum nem található meg, vagy nem felel meg egy táblának vagy indexelt nézetnek.
  • A megadott statisztikai azonosító nem felel meg a megadott objektumazonosító meglévő statisztikáinak.
  • A jelenlegi felhasználónak nincs engedélye a statisztikai objektum megtekintésére.

Ez a viselkedés lehetővé teszi a keresztbe való alkalmazásra sys.dm_db_stats_properties biztonságos használatot olyan nézetekben, mint sys.objects és sys.stats.

A statisztikai frissítés dátuma a statisztikai blobobjektumban a hisztogram és sűrűségvektorvan tárolva, nem a metaadatokban. Ha a rendszer nem olvas be adatokat a statisztikai adatok létrehozásához, a statisztikai blob nem jön létre, a dátum nem érhető el, és az last_updated oszlop is.NULL Ez a feltétel vonatkozik szűrt statisztikákra, amelyekre a predikátum nem ad vissza sorokat, vagy új üres táblákra.

Permissions

Statisztikai SELECT oszlopokra kell jogosultságot szerezned, vagy a tábla tulajdonosának kell lenned, vagy tagnak kell lenned a sysadmin fix szerver, a db_owner fix adatbázis vagy a db_ddladmin fix adatbázis szerep tagjaként.

Examples

A. Egyszerű példa

A következő példa visszaadja Person.Person az adatbázis táblázatának statisztikáit AdventureWorks tartalmazó információkat.

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

B. A táblázat összes statisztikai tulajdonságát visszaadja

A következő példa adja vissza az összes statisztika tulajdonságait, amelyek a táblázatban Sales.SalesOrderDetailléteznek.

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. Statisztikai visszaigazolás tulajdonságokkal gyakran módosított objektumok esetén

A következő példa visszaadja az összes táblázatot, indexelt nézetet és statisztikát a jelenlegi adatbázisban, ahol az első oszlopot több mint 1000-szer módosították az utolsó statisztikai frissítés óta.

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;