Sommes-nous censés courir ANALYZE myview;
sur une vue de PostgreSQL 9.6+ Matérialisée après avoir exécuté A REFRESH MATERIALIZED VIEW CONCURRENTLY myview;
?
Ou est-ce inutile (peut-être que les statistiques d'index sont déjà mises à jour sur rafraîchir?)
Les statistiques de la table sont ( non Mise à jour automatiquement.
Ils restent inchangés si rafraîchis avec l'option CONCURRENTLY
.
Sans CONCURRENTLY
, un nouveau fichier est écrit pour la table et les comptes de base relpages
et reltuples
dans le catalogue système pg_class
sont par conséquent réinitialisés à 0
. Statistiques de table (par colonne) dans pg_statistic
restent toujours inchangés, cependant.
J'ai couru un test rapide à Postgres 9.6 pour confirmer.
Dans certains cas (lorsque les plans de requête ne dépendent pas beaucoup des statistiques actuelles), vous pouvez enregistrer le temps et non ANALYZE
du tout. Dans tous les autres cas, vous aurez/besoin de planifier un manuel ANALYZE myview;
juste après le REFRESH
. Ou vous attendez jusqu'à ce que la touche Autovacuum, ce qui ne se passe que si suffisamment de lignes ont été modifiées (CONCURRENTLY
exécute des commandes DDL sur le MV pour affecter uniquement les lignes modifiées.)