Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
La sys.dm_db_stats_properties fonction de gestion dynamique restitue des statistiques pour l’objet de base de données spécifié dans la base de données courante.
Pour les tables partitionnées, voir aussi le sys.dm_db_incremental_stats_properties similaire.
Syntaxe
sys.dm_db_stats_properties (object_id, stats_id)
Arguments
object_id
L’ID de l’objet dans la base de données actuelle.
object_id est int.
stats_id
L’ID des statistiques pour le spécifié object_id. Vous pouvez obtenir l’ID statistique depuis la vue de gestion dynamique sys.stats .
stats_id est 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). |
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 Remarques de cet article. |
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 égale à la valeur retournée dans la rows colonne. |
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 et versions ultérieures |
Notes
La sys.dm_db_stats_properties fonction retourne un ensemble de lignes vide sous l’une des conditions suivantes :
-
object_idoustats_idestNULL. - L’objet spécifié n’est pas trouvé ou ne correspond pas à une table ou à une vue indexée.
- L’ID statistique spécifié ne correspond pas aux statistiques existantes pour l’ID de l’objet spécifié.
- L’utilisateur actuel n’a pas d’autorisations pour voir l’objet statistiques.
Ce comportement permet une utilisation sûre de sys.dm_db_stats_properties lorsqu’il est appliqué en croisement à 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. Quand 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 last_updated colonne est NULL. Cette condition s’applique aux statistiques filtrées pour lesquelles le prédicat ne renvoie aucune ligne, ou aux nouvelles tables vides.
autorisations
Vous avez besoin SELECT d’autorisations sur les colonnes de statistiques, ou vous devez posséder la table, ou être membre du sysadmin rôle serveur fixe, du db_owner rôle de base de données fixe, ou du db_ddladmin rôle de base de données fixe.
Exemples
R. Exemple simple
L’exemple suivant renvoie des informations sur les statistiques pour la Person.Person table dans la AdventureWorks base de données.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Retourner toutes les propriétés statistiques pour une table
L’exemple suivant restitue les propriétés de toutes les statistiques existantes pour la table 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. Propriétés de statistiques de retour pour les objets fréquemment modifiés
L’exemple suivant restitue toutes les tables, vues indexées et statistiques de la base de données actuelle pour lesquelles la colonne principale a été modifiée plus de 1 000 fois depuis la dernière mise à jour des statistiques.
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;