Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
De sys.dm_db_stats_properties dynamische beheerfunctie geeft statistieken terug voor het opgegeven databaseobject in de huidige database.
Voor gepartitioneerde tabellen zie ook de vergelijkbare sys.dm_db_incremental_stats_properties.
Syntaxis
sys.dm_db_stats_properties (object_id, stats_id)
Arguments
object_id
De ID van het object in de huidige database.
object_id is int.
stats_id
De ID van statistieken voor de gespecificeerde object_id. Je kunt de statistiek-ID krijgen vanuit de sys.stats dynamische beheerweergave.
stats_id is int.
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
object_id |
int | ID van het object (tabel of geïndexeerde weergave). |
stats_id |
int | Id van het statistiekenobject. Is uniek in de tabel of geïndexeerde weergave. Zie sys.stats (Transact-SQL)voor meer informatie. |
last_updated |
datetime2 | Datum en tijd waarop het statistiekobject voor het laatst is bijgewerkt. Zie de sectie Opmerkingen in dit artikel voor meer informatie. |
rows |
bigint | Totaal aantal rijen in de tabel of geïndexeerde weergave toen statistieken voor het laatst werden bijgewerkt. Als de statistieken worden gefilterd of overeenkomen met een gefilterde index, kan het aantal rijen kleiner zijn dan het aantal rijen in de tabel. |
rows_sampled |
bigint | Totaal aantal rijen dat is gesampleerd voor berekeningen van statistieken. |
steps |
int | Aantal stappen in het histogram. Zie DBCC-SHOW_STATISTICS (Transact-SQL)voor meer informatie. |
unfiltered_rows |
bigint | Totaal aantal rijen in de tabel voordat de filterexpressie wordt toegepast (voor gefilterde statistieken). Als statistieken niet gefilterd zijn, unfiltered_rows is gelijk aan de waarde die in de rows kolom wordt teruggegeven. |
modification_counter |
bigint | Totaal aantal aanpassingen voor de leidende statistiekkolom (de kolom waarop het histogram is gebouwd) sinds de laatste keer dat statistieken werden bijgewerkt. Geheugen-geoptimaliseerde tabellen: vanaf SQL Server 2016 (13.x) en in Azure SQL Database bevat deze kolom: het totaal aantal wijzigingen voor de tabel sinds de laatste keer dat statistieken werden bijgewerkt of de database opnieuw werd opgestart. |
persisted_sample_percent |
float | Persistent steekproefpercentage dat wordt gebruikt voor statistische updates die niet expliciet een steekproefpercentage opgeven. Als de waarde nul is, wordt er geen persistent steekproefpercentage ingesteld voor deze statistiek. Van toepassing op: SQL Server 2016 (13.x) SP1 CU4 en latere versies |
Opmerkingen
De sys.dm_db_stats_properties functie geeft een lege rijset terug onder een van de volgende voorwaarden:
-
object_idofstats_idisNULL. - Het opgegeven object wordt niet gevonden of komt niet overeen met een tabel of geïndexeerde weergave.
- De gespecificeerde statistiek-ID komt niet overeen met bestaande statistieken voor de opgegeven object-ID.
- De huidige gebruiker heeft geen rechten om het statistiekobject te bekijken.
Dit gedrag maakt veilig gebruik mogelijk van sys.dm_db_stats_properties wanneer kruis toegepast op rijen in weergaven zoals sys.objects en sys.stats.
De updatedatum van statistieken wordt samen met het histogram en de dichtheidsvector opgeslagen in het blobobject voor statistieken, niet in de metagegevens. Wanneer er geen gegevens worden gelezen om statistiekengegevens te genereren, wordt de blob voor statistieken niet gemaakt, is de datum niet beschikbaar en is last_updatedde NULL kolom . Deze voorwaarde geldt voor gefilterde statistieken waarbij het predicaat geen rijen teruggeeft, of voor nieuwe lege tabellen.
Permissions
Je hebt rechten nodig SELECT op statistiekkolommen, of je moet eigenaar zijn van de tabel, of lid zijn van de sysadmin vaste serverrol, de db_owner vaste databaserol of de db_ddladmin vaste databaserol.
Voorbeelden
Eén. Eenvoudig voorbeeld
Het volgende voorbeeld geeft informatie over de statistieken voor de Person.Person tabel in de AdventureWorks database.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Geef alle statistische eigenschappen terug voor een tabel
Het volgende voorbeeld geeft eigenschappen van alle bestaande statistieken voor de tabel 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. Return-statistiekeigenschappen voor vaak gewijzigde objecten
Het volgende voorbeeld geeft alle tabellen, geïndexeerde weergaven en statistieken terug in de huidige database waarvoor de leidende kolom meer dan 1.000 keer is aangepast sinds de laatste statistiekupdate.
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;