PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Optimisation restauration de base avec psql ...

Technique - optimisation | Optimisation restauration de base avec psql ...

Par djezair31 le 23/05/2007 - 16:03

Salut a tous,

je possede une DB sur PostgreSQL 8.0.1 sur laquel je stocke tout les flux reseau entrant et sortant. Il s'agit d'une base d'environ 7G et qui peut monter a 30G.

Toutes les semaines on lance un VACUM sur la base pour la nettoyer. Le VACUM est extrement long.

Du coup on prefere sauvegarder la base, la suppprimer puis la restaurer toutes les semaines.

Postgres gere le pg_dump (sauvegarde) et le psql (restauration) sur un seul process alors que l'on possede un BI Xeon Quad Core.

Que de gaspillage de puissance.

Pour combler cette lacune de postgres (si s'en est une) on sauvegarde le schema only puis dans 8 process paralleles on sauvegarde 8 tables de la base avec uniquement les donnees. On reitere tant que toutes les bases n'ont pas ete sauvegardées.

Avec cette methode, On constate un gain d'environ 6x par rapport a à pg_dump ma_base > ma_base.dump

Ensuite pour ce qui est dela restauration, on parse le fichier schema pour extraire de ce fichier la creation d'index et Foreign Key. On restaure le fichier sans les index et Foreign Key. Puis dans 8 process en parallele on restore les tables (data only) et enfin on restore les index et foreign Key.

La encore, on constate un gain important par rapport a une restauration classique (cat ma_base.dump | psql ma_base).

Par contre pour ce qui est de la restauration des indexes je la trouve longue en temps, alors qu'aucun effort CPU n'est demandé (10%CPU pour psql et postmaster)

Question 1 :
mieux vaut-il restaurer toutes les base puis les index
ou
une table son index une table son index une table son index une table son index une table son index une table son index

Question 2 : Y a t-il un moyen d'arriver a mes fins sans avoir a reinventer la roue, et qu'en est-il du multiprocess avec postgresql ?

Merci

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour Déjà vous utilis

Christophe Chauvet/ = 24 Mai, 2007 - 11:31

Bonjour

Déjà vous utilisez une 8.0.1 alors que la dernière version est la 8.0.13
sous 12 versions d'écart et de multiple correction de bug et performance.

Ensuite vous récupérez des flux réseau entrant/sortant qui génère de multiple insertion dans la base, je pense que des VACUUM simple toute les heures est nécessaire et un full VACUUM le jour du WE le moins chargé.

la version 8.0 a introduit la notion de TABLESPACE qu'il serait peut être utile d'étudier.

Cordialement.

Christophe Chauvet
KrysKool.org


Merci de votre reponse, il

djezair31/ = 28 Mai, 2007 - 18:19

Merci de votre reponse,

il m'est impossible de mettre a jour la version de postgresql pour diverses raisons (client, ...)

Pour info un VACUUM met environ 10 minutes sur une base fraichement restaurer. Est-ce que le VACUUM suivants (toutes les heures) mettra aussi 10 minutes ou moins ?

Je n'ai pas pu tester car en deplacement actuellement. Si les VACUUM suivants sont plus rapide alors effectivement cela peut-eter une bonne idée.

Autre chose, comment expliquer que la restauration du schema, puis des tables et enfin des index et plus longue que la restauration de la base en une fois ?

Merci


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.