OVH Cloud OVH Cloud

Import de gros volume de données

4 réponses
Avatar
Etienne SOBOLE
Salut.

J'utilise postgreSQL
J'importe des fichiers de 5000 enregistrements (avec un bonne 30aine de
champs)
l'import prend 3 minutes sur mon PIII 700 mhz.

j'essaye donc d'optimiser ca.
j'ai fait des transactions qui se commit par paquet de 250 inserts (et j'ai
deja pas mal gagné),
je me demande s'il n'y aurait pas moyen de couper l'indexation pour gagner
encore un peu de temps...
j'ai pu remarquer que mon import est de plus en plus lent au fur et a mesure
que les données sont enregistrées.

y a t-il donc un moyen de couper les index sans pour autant les retirer et
les remettre?

merci.
Etienne

4 réponses

Avatar
Patrick Mevzek
Le Sun, 13 Mar 2005 16:18:08 +0100, Etienne SOBOLE a écrit :
y a t-il donc un moyen de couper les index sans pour autant les retirer
et les remettre?



Non, pas à ma connaissance. Mais en quoi est-ce un problème de les
enlever et les remettre ?

Regardez aussi du côté de COPY, qui est plus rapide qu'une insertion
classique.

Sinon, la présence de triggers ou de contraintes va jouer sur le
temps d'importation.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Avatar
Trognon Patrice
Patrick Mevzek wrote:

Le Sun, 13 Mar 2005 16:18:08 +0100, Etienne SOBOLE a écrit :
y a t-il donc un moyen de couper les index sans pour autant les retirer
et les remettre?



Non, pas à ma connaissance. Mais en quoi est-ce un problème de les
enlever et les remettre ?

Regardez aussi du côté de COPY, qui est plus rapide qu'une insertion
classique.

Sinon, la présence de triggers ou de contraintes va jouer sur le
temps d'importation.




oui tout a fait.

Perso je fais toujours mes scripts de création de base de la
facon suivante :

CreateTables.sh
N'effectue que les ordres de create table, sans les contraintes.

CreatePrimaryKey.sh
Applique uniquement les primary key.

CreateForeignKeys.sh
Applique les foreign key.

CreateIndexes.sh
Creation des autres indexes.

DropIndexes.sh
Drop des indexes créés par le script précédent.

DropForeignKeys.sh
Drop des foreign keys.

DropPrimaryKeys.sh
Drop des primary key.

DropTables.
Drop des tables.

Ainsi que j'ai de gros volumes à importer, je peux virer les
foreign key, primary key, et les index, j'importe ainsi
plus vite, et je reapplique mes contraintes apres l'importation.

Comme dit Patrick je ne vois donc pas ou est le problème de virer
les index et les remettre.

Surtout que ces scripts tu peux les générer assez simplement
a coup de commandes SQL pipés dans des bon vieux scripts shell.

--
Cordialement,

Patrice Trognon
http://www.javadevel.com
Avatar
Etienne SOBOLE
Comme dit Patrick je ne vois donc pas ou est le problème de virer
les index et les remettre.

Surtout que ces scripts tu peux les générer assez simplement
a coup de commandes SQL pipés dans des bon vieux scripts shell.



Ben pour etre franc, il n'y a pas franchement de probleme.
C'est juste que s'il y avait un moyen de faire plus simple, j'aurai été
preneur...

mon autre soucis, est que c'est apache (le serveur web) qui execute
l'import.
et donc j'avais pas l'intention de l'autoriser a toucher a la structure de
la base...
mais bon...

Sinon a titre d'information y a deja des gens qui utilise en production
PostgreSQL 8 ?

Etienne
Avatar
Etienne SOBOLE
Comme dit Patrick je ne vois donc pas ou est le problème de virer
les index et les remettre.



Et bien apres tests, le gain n'est pas terrible...
un petit 20% j'avais espéré mieux...
Enfin c'est toujours ca.

Etienne