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

Améliorer les performances d'une base en lecture

Technique - optimisation | Améliorer les performances d'une base en lecture

Par Ontologiae le 27/04/2006 - 14:04

Bonjour, je tente de finaliser la migration d'une base de donnée Oracle vers Postgre et j'ai de graves problèmes de performances.
Cette base ne sert quasi exclusivement qu'en lecture. Les écritures et autres modifications sont très rares, de l'ordre de quelques lignes par mois.
C'est une petite base pesant 50 Mo environ. Elle sert pour un site web sur l'intranet de l'entreprise et est de temps en temps utilisée (quelques fois par jours).

Par rapport à Oracle, j'ai de très grave écarts de performances atteignant un facteur 10 à 50.
Une requête prenant 2 mn auparavant met 1h à se finaliser.

J'ai essayé d'appliquer des règles d'optimisation de base sur cette requête (une vue), j'ai créé des index (en btree) là où il semblait que cela soit nécessaire.

J'en viens à essayer d'optimiser Postgre qui ne sert qu'à cette base. Je trouve beaucoup de ressources dédiéés à l'optimisation, mais celles-ci sont principalement dévolues à des bases supportant des écritures fréquentes et volumineuse, ce qui n'est pas mon cas.
Mon problème est plutôt d'optimiser Postgre pour une petite base utilisée quasiment exclusivement en lecture mais devant renvoyer des résultat pour des requêtes assez complexes joignant (en Left join, natural join) une dizaine de table à chaque fois.

Bref, quelqu'un aurait-il la gentillesse de me donner quelques lignes directrices, quelques documentations plus tournées vers un problème de perf "Lecture/Requêtes complexes" ?

En vous remerciant d'avance :)

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.

Qu'as-tu déjà paramètrer e

sparky/ = 27 Avril, 2006 - 14:54

Qu'as-tu déjà paramètrer et comment ?
De combien de ram disposes-tu ?
Quels sont les paramètres mémoire utilisés ? http://docs.postgresqlfr.org/pgsql-8.1.3-fr/runtime-config-resource.html

As-tu fait des "explain" des requêtes les plus lourdes, as-tu regardé dans pg_stat_indexes les index utilisables, inutiles ??


Je n'ai rien paramétré car

Ontologiae/ = 27 Avril, 2006 - 16:58

Je n'ai rien paramétré car lorsque j'ai essayé le serveur ne voulait plus redémarrer, j'ai donc laisser la config standard.

1 Go de Ram sur la machine, avec 512 de dispo (constatation à la mano, mais ce n'est pas un serveur hyper utilisé).

Alors comme je découvre Postgre, j'ai essayé explain mais j'y comprend pas grand chose, et quand aux pg_stat_indexes, je ne crois pas que les logs soient activés, car ils sont décommentés par défaut, et c'est en les décomentant que le serveur postgre ne voulais plus démarrer....


Commençons par le commenceme

SAS/ = 27 Avril, 2006 - 17:49

Commençons par le commencement...
Un petit vacuum après l'insertion des données ?

Voir à ce propos :

http://docs.postgresqlfr.org/pgsql-8.1.3-fr/sql-vacuum.html

Librement,
Stéphane Schildknecht


Les vacuum ont été effectu

Ontologiae/ = 28 Avril, 2006 - 10:07

Les vacuum ont été effectués après l'insertion des données
(vacuum verbose analyse).
J'ai fait uns script pour générer automatiquement les commandes et les aient lancées régulièrement.

C'est pour ça que je me suis attelé au fichier de conf...


bon pour commencer il faut qu

sparky/ = 28 Avril, 2006 - 11:17

bon pour commencer il faut que tu augmentes les paramètres work_mem et shared_mem (voir le lien que j'avais déjà donné), pense à décommenter les logs et donc résoud le problème au démarrage qui y est lié. Tu devrais utiliser les pg_stat et les explain plus tard. (c'est dans la doc officielle de toute façon), poste les résultats des explain ici, on va tuner ;-)


Je n'y arrivee pas... A ch

Ontologiae/ = 28 Avril, 2006 - 12:05

Je n'y arrivee pas...

A chaque fois que je décommente les lignes de logs, le serveur ne veut plus redémmarer....

Note utile : je suis sous windows (pas le choix)

Dois-t on activer toutes les lignes ? Syslog est il possible sous windows ?

Bref comment faire ?


ok oublie les log pour le mom

sparky/ = 28 Avril, 2006 - 15:42

ok oublie les log pour le moment, du moment qu'on a les stats c'est bon( http://docs.postgresqlfr.org/pgsql-8.1.3-fr/runtime-config-statistics.html)

Pour les log tu peux aller voir dans les 'event viewer' dans 'Manage Computer'


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