Megosztás a következőn keresztül:


sys.dm_db_stats_properties (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

A megadott adatbázis-objektum (táblázat vagy indexelt nézet) statisztikai tulajdonságait adja vissza a jelenlegi SQL Server adatbázisban. A partíciós táblák esetében lásd a hasonló sys.dm_db_incremental_stats_properties.

Szemantika

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
Az az objektum azonosítója az aktuális adatbázisban, amelyhez az egyik statisztikájának tulajdonságait kérik. object_idint.

stats_id
A megadott object_id statisztikák azonosítója. A statisztikai azonosító a sys.stats dinamikus felügyeleti nézetből kérhető le. stats_idint.

Visszaadott tábla

Oszlop név Adattípus Description
object_id int Annak az objektumnak (tábla vagy indexelt nézet) az azonosítója, amelyhez a statisztikai objektum tulajdonságait szeretné visszaadni.
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 lap 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 megegyezik a soroszlopban lévő értékvisszaadással.
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 Tartós mintaszázalék, amelyet statisztikai frissítésekhez használnak, és amelyek nem határozzák meg kifejezetten mintavételi százalékot. Ha az érték nulla, akkor nincs megőrzött minta százalékos értéke ehhez a statisztikai adathoz.

Vonatkozik a következőkre: SQL Server 2016 (13.x) SP1 CU4

Megjegyzések

sys.dm_db_stats_properties üres sorhalmazt ad vissza az alábbi feltételek bármelyike esetén:

  • object_id vagy stats_id 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 sys.dm_db_stats_properties biztonságos használatát, amikor sorokra keresztezve alkalmazzák olyan nézetekben, mint a sys.objects és a 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 nem olvasnak adatokat statisztikai adatok generálásához, a statisztikai folb nem jön létre, a dátum nem elérhető, és a last_updated oszlop NULL. Ez igaz szűrt statisztikákra, amelyeknél a predikátum nem ad sorokat, vagy új üres táblákra.

Permissions

Megköveteli, hogy a felhasználónak legyen kiválasztási joga statisztikai oszlopokhoz, vagy a felhasználó a tábla tulajdonosa, vagy a felhasználó tagja legyen a sysadmin fix szerver, fix db_owner adatbázis vagy fix db_ddladmin adatbázis szerepnek.

Példák

A. Egyszerű példa

A következő példa adja vissza a AdventureWorks adatbázis táblázatának Person.Person statisztikáit.

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

B. Minden statisztikai tulajdonság visszaküldése egy táblázathoz

Az alábbi példa adja vissza minden statisztika tulajdonságait, amelyek a TEST táblához léteznek.

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. Statisztikai tulajdonságok visszaadása gyakran módosított objektumokhoz

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

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;  

Lásd még:

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Objektumokkal kapcsolatos dinamikus felügyeleti nézetek és függvények (Transact-SQL)
dinamikus felügyeleti nézetek és függvények (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)