web-dev-qa-db-fra.com

Postgres Materialized View Ingense de manière spectaculaire en taille

J'ai une base de données Production Postgres 10. Toutes les heures que je manquez "actualisée de la vue matérialisée simultanément" sur ma vision matérialisée pour recalculer les valeurs; Seules quelques nouvelles lignes sont ajoutées chaque jour.

Toutes les vues matérialisées (et leurs index) augmentent considérablement. La vue qui devrait être 102 Mo est maintenant de 1700 Mo et les index ont subi une inflation similaire. Et le temps de rafraîchissement a augmenté de 17 secondes à 10 minutes. La taille globale de la DB est passée de 4 Go à 21 Go au cours de la dernière journée en raison des vues et de leurs indices en croissance. Je ne peux pas faire un rafraîchissement non concomitant car ces vues sont constamment lues.

Exécution d'un rafraîchissement déclenche une grande quantité d'E/S de disque.

Je n'ai aucune idée de ce qui cause cette question. J'ai un autovacuum activé et configuré. J'ai 8 Go de mémoire et Work_Mem est défini sur 256 Mo.

3
FluxDipole

Mon problème était en cours d'exécution d'une "vue sur rafraîchissement simultanément" avant que l'Autovacuum avait fini de fonctionner, ce qui a conduit à la table BLOOQUE. Maintenant, je vide manuellement analyser après chaque rafraîchissement.

6
FluxDipole

Vous n'avez fourni aucun moyen de dire quel est le problème.

Une chose à vérifier si vous avez des transactions de longue date. Ils pourraient être inactifs mais toujours capables de voir de vieilles versions des rangées de vue. Cela signifierait que chaque rafraîchissement ajouterait efficacement une autre copie des lignes matérialisées de votre vue.

Voir ce qui est dans la vue Système pg_stat_activity et prêter une attention particulière aux horodatages.

1
Richard Huxton