Bonjour à tous,
J'étudie actuellement la migration de mon datawarehouse d'oracle vers postgresql (8.2 pour le moment, je vais prochainement essayer la 8.3).
Quelques infos sur la base datawarehouse :
- environ 100 Go
- Plus grosses tables : environ 30 millions de lignes
- Modèle en étoile
Les premiers tests de compatibilité avec nos outils BI (cognos8) sont plutot concluants, je n'ai pas détecté d'incompatibilité bloquante pour le moment.
J'ai cependant un gros problème en ce qui concerne l'exécution des requêtes de mise à jour de cubes d'analyse.
Ce type de requête à la particularité d'être exécutée de nuit, et de remonter un grand nombre d'enregistrements ( 30 millions dans mon cas )
L'exécution de la requête démarre bien, mais la consommation de mémoire sur le serveur est gigantesque ! le process postmaster consomme toute la ram (4Go sur ce serveur) puis rempli petit à petit le swap jusqu'au blocage de la machine.
J'ai déjà modifié certains paramètres dans le fichier postgresql.conf :
- shared_buffers = 1048576 (1024 Mo)
- work_mem = 65536 (64 Mo)
- temp_buffers = 51200 (50 Mo)
- maintenance_work_mem = 262144 (256 Mo)
Depuis ces changements, la performance des requêtes s'est considérablement améliorée, mais j'ai toujours mon problème de consommation mémoire et de swap.
C'est comme si les données extraites étaient "retenues" en mémoire par postgres .... ce qui ne m'intéresse pas du tout, vu que ce type de requête n'est exécutée qu'une seule fois par jour.
Pour ceux qui ont eu le courage de me lire, voici mes questions :
- Existe-t-il un paramètre du type "Durée de rétention", nous permettant de dire à Postgres "d'oublier" rapidement les données extraites afin de limiter la consommation mémoire et le swap ?
- Avez vous un retour d'expérience sur l'utilisation de postgres en mode datawarehouse et sur la façon de le configurer pour ce type d'utilisation ?
D'avance merci !
Partager