Sous PostgreSQL 9.2.2 (Windows 32 bits), j'ai un pg_restore
commande qui entraîne systématiquement des avertissements de journal sur la fréquence des points de contrôle, par exemple:
LOG: checkpoints are occurring too frequently (17 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
La base de données a une taille d'environ 3,3 Go avec 112 tables/160 vues et est restaurée en 14 minutes environ.
Est-il normal que cela se produise pendant un pg_restore
?
Ce n'est pas rare lors d'une restauration de base de données entière car c'est une opération exceptionnellement énorme. Si vous voyez cela pendant le fonctionnement normal, envisagez d'augmenter votre paramètre pour checkpoint_segments
de façon permanente, tout comme les indications de message d'erreur.
Vous pourriez avoir la difficulté de définir checkpoint_segments
plus haut juste avant la restauration, puis abaissez-le à nouveau. C'est même ce que le manuel suggère (y compris une explication) :
Augmenter temporairement le
checkpoint_segments
La variable de configuration peut également accélérer le chargement de données volumineuses. En effet, le chargement d'une grande quantité de données dans PostgreSQL provoquera des points de contrôle plus fréquents que la fréquence normale des points de contrôle (spécifiée par lecheckpoint_timeout
variable de configuration). Chaque fois qu'un point de contrôle se produit, toutes les pages sales doivent être vidées sur le disque. En augmentantcheckpoint_segments
temporairement pendant les chargements de données en masse, le nombre de points de contrôle requis peut être réduit.
Réponse connexe avec plus de détails:
La nouvelle version à venir a une approche plus intelligente. Citant le notes de version bêta :
Remplacer le paramètre de configuration
checkpoint_segments
avecmin_wal_size
etmax_wal_size
(Heikki Linnakangas)Cela permet d'allouer un grand nombre de fichiers WAL sans les conserver s'ils ne sont pas nécessaires. Ainsi, la valeur par défaut pour
max_wal_size
a été porté à1GB
.
A part: le nombre de vues est à peine pertinent, celles-ci ne contiennent aucune donnée, juste la "recette", c'est-à-dire: la requête et certains attributs de la vue. Pour la question posée, seule la taille totale du fichier de sauvegarde importe.