sys.dm_db_stats_properties (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Gibt Eigenschaften von Statistiken für das angegebene Datenbankobjekt (Tabelle oder indizierte Ansicht) in der aktuellen SQL Server-Datenbank zurück. Informationen zu partitionierten Tabellen finden Sie in den ähnlichen sys.dm_db_incremental_stats_properties.
Syntax
sys.dm_db_stats_properties (object_id, stats_id)
Argumente
object_id
ID des Objekts in der aktuellen Datenbank, für die Eigenschaften einer der enthaltenen Statistiken angefordert werden. object_id ist int.
stats_id
ID der Statistik für die angegebene object_id. Die Statistik-ID kann aus der dynamischen Verwaltungssicht sys.stats abgerufen werden. stats_id ist int.
Zurückgegebene Tabelle
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
object_id | int | ID des Objekts (Tabelle oder indizierte Sicht), für das die Eigenschaften des Statistikobjekts zurückgegeben werden sollen. |
stats_id | int | Die ID des Statistikobjekts. Diese ist innerhalb der Tabelle oder indizierten Sicht eindeutig. Weitere Informationen finden Sie unter sys.stats (Transact-SQL). |
last_updated | datetime2 | Datum und Uhrzeit der letzten Aktualisierung des Statistikobjekts. Weitere Informationen finden Sie im Abschnitt Hinweise dieses Artikels. |
rows | bigint | Gesamtanzahl der Zeilen in der Tabelle oder indizierten Sicht zum Zeitpunkt der letzten Aktualisierung der Statistik. Wenn die Statistik gefiltert wird oder einem gefilterten Index entspricht, kann die Anzahl der Zeilen geringer als die Anzahl der Zeilen in der Tabelle sein. |
rows_sampled | bigint | Gesamtzahl der Zeilen, die für die statistischen Berechnungen in die Stichprobe aufgenommen wurden. |
steps | int | Anzahl der Schritte im Histogramm. Weitere Informationen finden Sie unter DBCC SHOW_STATISTICS (Transact-SQL). |
unfiltered_rows | bigint | Gesamtanzahl der Zeilen in der Tabelle vor dem Anwenden des Filterausdrucks (für gefilterte Statistiken). Wenn die Statistik nicht gefiltert ist, entspricht „unfiltered_rows“ dem in der rows-Spalte zurückgegebenen Wert. |
modification_counter | bigint | Gesamtanzahl der Änderungen für die führende Statistikspalte (auf der das Histogramm basiert) seit der letzten Aktualisierung der Statistik. Speicheroptimierte Tabellen: Das Starten von SQL Server 2016 (13.x) und in Azure SQL-Datenbank dieser Spalte enthält: Die Gesamtanzahl der Änderungen für die Tabelle seit der letzten Aktualisierung der Tabelle oder beim Neustart der Datenbank. |
persisted_sample_percent | float | Der persistierte Prozentwert für die Stichprobe wird für Aktualisierungen von Statistiken verwendet, die keinen expliziten Prozentwert für die Stichprobenentnahme angibt. Wenn der Wert 0 (null) ist, wird kein persistierter Prozentwert für diese Statistik festgelegt. Gilt für: SQL Server 2016 (13.x) SP1 CU4 |
Hinweise
sys.dm_db_stats_properties gibt ein leeres Rowset unter einer der folgenden Bedingungen zurück:
- object_id oder stats_id ist NULL.
- Das angegebene Objekt wurde nicht gefunden bzw. entspricht keiner Tabelle bzw. keiner indizierten Sicht.
- Die angegebene Statistik-ID entspricht keiner vorhandenen Statistik für die angegebene Objekt-ID.
- Der aktuelle Benutzer verfügt nicht über die erforderlichen Berechtigungen zum Anzeigen des Statistikobjekts.
Dieses Verhalten ermöglicht die sichere Verwendung von sys.dm_db_stats_properties , wenn Kreuz auf Zeilen in Ansichten wie sys.objects und sys.stats angewendet wird.
Das Aktualisierungsdatum für die Statistiken befindet sich gemeinsam mit dem Histogramm und Dichtevektor nicht in den Metadaten, sondern im Statistik-Blobobjekt. Wenn keine Daten zum Generieren von Statistikdaten gelesen werden, wird das Statistik-BLOB nicht erstellt, das Datum ist nicht verfügbar, und die last_updated Spalte ist NULL. Dies ist der Fall bei gefilterten Statistiken oder neuen und leeren Tabellen, für die das Prädikat keine Zeilen zurückgibt.
Berechtigungen
Erfordert, dass der Benutzer über SELECT-Berechtigungen für Statistikspalten verfügt, Besitzer der Tabelle oder Mitglied der festen Serverrolle sysadmin
, der festen Datenbankrolle db_owner
oder der festen Datenbankrolle db_ddladmin
ist.
Beispiele
A. Einfaches Beispiel
Im folgenden Beispiel werden die Statistiken für die Person.Person
Tabelle in der AdventureWorks-Datenbank zurückgegeben.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Zurückgeben aller Statistikeigenschaften für eine Tabelle
Im folgenden Beispiel werden die Eigenschaften aller Statistiken zurückgegeben, die für die TEST-Tabelle vorhanden sind.
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. Zurückgeben von Statistikeigenschaften für häufig geänderte Objekte
Im folgenden Beispiel werden alle Tabellen, indizierten Sichten und Statistiken, für die die führende Spalte seit dem letzten Statistikupdate mehr als tausend Mal geändert wurde, aus der aktuellen Datenbank zurückgegeben.
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;
Weitere Informationen
DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Objektbezogene dynamische Verwaltungssichten und -funktionen (Transact-SQL)
Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)