web-dev-qa-db-fra.com

Quand les statistiques de _wa_sys_ sont-elles mises à jour?

J'ai certaines des statistiques Auto générées _wa_sys_ dans ma base de données qui n'ont pas été mises à jour dans un moment (par rapport à d'autres statistiques dans la même table)

La règle de base semble être dans les tableaux> 500 rangées que les statistiques sont mises à jour à un changement de données de 20% + 500 lignes.

Cependant, je peux voir utiliser la requête suivante

SELECT  t.name,
        i.name,
        i.rowcnt,
        i.rowmodctr,
        p.last_updated
FROM    sys.sysindexes i
        JOIN sys.tables t
            ON i.id = t.object_id
        JOIN sys.stats s
            ON s.object_id = t.object_id AND i.name = s.name
        CROSS APPLY sys.dm_db_stats_properties(s.object_id,s.stats_id) p
WHERE   rowmodctr > 0
ORDER BY i.rowmodctr DESC

Qu'il y a une table avec un certain nombre de statistiques _wa_sys_ voies de même retard (et ont une rondedctr supérieure à 20% + 500)

Si une requête est exécutée contre la table et ajoutez-en une des colonnes associées à la statistique _WA_SYS_ OUT DE DATE dans la clause WHERE et vérifiez la date mise à jour de la statistique, je peux voir qu'il a mis à jour.

Si j'exécute la même requête avec la clause Where à nouveau, la statistique ne met pas à jour

Il semble que la mise à jour de statistiques _wa_sys lorsqu'une requête est exécutée qui les utilisera et ils sont obsolètes?

7
SEarle1986

SQL Server met uniquement automatiquement à jour automatiquement les statistiques utilisées. Il peut ne pas utiliser activement les statistiques _wa_sys pour l'estimation de la cardinalité, bien qu'elle puisse les charger dans le cadre de la décision.

Pour voir quelles statistiques sont utilisées pour votre requête, ajoutez ceci à la fin de votre requête et regardez dans l'onglet Messages:

OPTION(QUERYTRACEON 3604, QUERYTRACEON 2363);

Si votre base de données est dans un niveau de compat avant 2014, vous en aurez besoin:

OPTION(QUERYTRACEON 3604, QUERYTRACEON 9292, QUERYTRACEON 9204);

Celles-ci ne vous diront pas pourquoi Il n'utilise pas certaines statistiques, bien que généralement si des statistiques sont créées avec un pourcentage d'échantillonnage plus élevé sur la même colonne, les statistiques avec des pourcentages d'échantillonnage inférieurs seront désavêlés.

N'oubliez pas que les mises à jour des statistiques ne se produisent pas sur la modification, uniquement lorsque les requêtes fonctionnent qui les utilisent

10
Erik Darling