sys.dm_db_stats_properties (Transact-SQL)

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance

Retourne les propriétés des statistiques pour l’objet de base de données spécifié (table ou vue indexée) dans la base de données SQL Server actuelle. Pour les tables partitionnée, consultez les sys.dm_db_incremental_stats_properties similaires.

Syntaxe

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id
ID de l'objet dans la base de données active dont les propriétés d'une de ses statistiques sont demandées. l’object_id est int.

stats_id
ID des statistiques pour l’object_id. spécifié. L’ID des statistiques peut être obtenu à partir de la vue de gestion dynamique sys.stats . stats_id correspond à int.

Table retournée

Nom de la colonne Type de données Description
object_id int ID de l'objet (table ou vue indexée) pour lequel retourner les propriétés de l'objet de statistiques.
stats_id int ID de l'objet de statistiques. Unique dans la table ou la vue indexée. Pour plus d’informations, consultez sys.stats (Transact-SQL).
last_updated datetime2 Date et heure de la dernière mise à jour de l'objet de statistiques. Pour plus d’informations, consultez la section Notes dans cette page.
rows bigint Nombre total de lignes dans la table ou la vue indexée au moment de la dernière mise à jour des statistiques. Si les statistiques sont filtrées ou correspondent à un index filtré, le nombre de lignes peut être inférieur à celui de la table.
rows_sampled bigint Nombre total de lignes échantillonnées pour le calcul des statistiques.
steps int Nombre d'étapes dans l'histogramme. Pour plus d’informations, consultez DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Nombre total de lignes dans la table avant l'application de l'expression de filtre (pour les statistiques filtrées). Si les statistiques ne sont pas filtrées, unfiltered_rows est égal à la valeur retournée dans la colonne rows.
modification_counter bigint Nombre total de modifications de la première colonne de statistiques (la colonne sur laquelle l'histogramme est construit) depuis la dernière mise à jour des statistiques.

Tables optimisées en mémoire : démarrage de SQL Server 2016 (13.x) et dans Azure SQL Database, cette colonne contient le nombre total de modifications pour la table depuis la dernière mise à jour des statistiques ou le redémarrage de la base de données.
persisted_sample_percent float Pourcentage d’échantillon persistant utilisé pour les mises à jour des statistiques qui ne spécifient pas explicitement un pourcentage d’échantillonnage. Si la valeur est zéro, aucun pourcentage d’échantillon persistant n’est défini pour cette statistique.

S’applique à SQL Server 2016 (13.x) SP1 CU4

Notes

sys.dm_db_stats_properties retourne un ensemble de lignes vide dans l’une des conditions suivantes :

  • object_id ou stats_id a la valeur NULL.
  • L'objet spécifié est introuvable ou ne correspond à aucune table ou vue indexée.
  • L'ID de statistiques spécifié ne correspond pas à des statistiques existantes pour l'ID d'objet spécifié.
  • L'utilisateur actuel n'est pas autorisé à afficher l'objet de statistiques.

Ce comportement permet l’utilisation sécurisée de sys.dm_db_stats_properties lorsqu’elle est appliquée à des lignes dans des vues telles que sys.objects et sys.stats.

La date de mise à jour des statistiques est stockée dans l’objet blob de statistiques avec l’histogramme et le vecteur de densité, et non dans les métadonnées. Lorsqu’aucune donnée n’est lue pour générer des données de statistiques, l’objet blob de statistiques n’est pas créé, la date n’est pas disponible et la colonne last_updated a la valeur NULL. C’est le cas pour les statistiques filtrées pour lesquelles le prédicat ne renvoie aucune ligne, ou pour les nouvelles tables vides.

autorisations

L'utilisateur doit avoir sélectionné des autorisations sur les colonnes de statistiques, ou bien il doit être le propriétaire de la table, ou encore il doit être membre du rôle serveur fixe sysadmin, du rôle de base de données fixe db_owner ou du rôle de base de données fixe db_ddladmin.

Exemples

R. Exemple simple

L’exemple suivant retourne les statistiques de la Person.Person table dans la base de données AdventureWorks.

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

B. Renvoi de toutes les propriétés de statistiques pour une table

L'exemple suivant retourne les propriétés de toutes les statistiques existantes pour la table TEST.

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. Renvoi de toutes les propriétés de statistiques pour les objets modifiés fréquemment

L'exemple suivant retourne toutes les tables, les vues indexées et les statistiques de la base de données active, dans lesquelles la première colonne a été modifiée plus de 1000 fois depuis la dernière mise à jour des statistiques.

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;  

Voir aussi

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Fonctions et vues de gestion dynamique associées aux objets (Transact-SQL)
Fonctions et vues de gestion dynamique (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)