Besoin de conseil et de bonnes idées

From: Sébastien Dinot <sebastien(dot)dinot(at)free(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Besoin de conseil et de bonnes idées
Date: 2005-06-03 08:47:40
Message-ID: 20050603084740.GA29037@newtech.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour à tous,

J'ai un problème sérieux et troublant de performance lors de
l'intégration massive de données en base (6 millions de lignes),
bien mis en évidence par le graphique suivant :

http://sebastien.dinot.free.fr/tmp/integration.png

- L'abscisse indique le nombre cumulé d'enregistrements traités.
- L'ordonnée, le temps en secondes pour intégrer les 10000 dernières
lignes.

Les données _brutes_ sont stockées dans un fichier CSV. Elles ne sont
pas directement intégrables en base à grand coup d'INSERT ou de COPY
car elles requièrent un filtrage, une mise en forme, divers contrôles
de validité et doivent vérifier plusieurs contraintes d'intégrité.

Ces données sont donc traitées par un script Perl qui effectue
grossièrement les mêmes traitements pour chaque ligne et enregistre
selon leur nature les données dans une table parmi trois possibles.

Au niveau SQL, ces traitements impliquent entre un et trois SELECT,
puis un INSERT. L'une des trois tables contient des clés étrangères
vers quatre autres tables mais celles-ci sont de taille réduites et
surtout, ne sont pas modifiées durant l'intégration.

Je pense que le comportement de PostgreSQL au delà du premier million
d'enregistrements montre que mes tables sont correctement indexées
mais je ne m'explique pas les résultats catastrophiques constatés lors
de l'intégration du premier million.

Je soupçonne une défaillance de l'optimiseur qui ferait de mauvais
choix lorsqu'il y a peu de données en base.

Qu'en pensez-vous ? Que vous inspire ce graphique ? Avez-vous déjà
connu de tels déboires ? De quel côté jetteriez-vous un oeil ?

Pour info, j'utilise un serveur PostgreSQL 7.4.7 sous Debian GNU/Linux
3.1 testing.

Sébastien

--
Sébastien Dinot, sebastien(dot)dinot(at)free(dot)fr
http://sebastien.dinot.free.fr/
Ne goûtez pas au logiciel libre, vous ne pourriez plus vous en passer !

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Geoffroy GRAND 2005-06-03 10:33:55 Re: pbl de connection entre PHP et Postgre 7.4.7
Previous Message Jean-Christophe Arnu 2005-06-03 08:36:55 Re: pbl de connection entre PHP et Postgre 7.4.7