IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[optimisation]augmenter les performances d'une base de données


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur TIC
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur TIC
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut [optimisation]augmenter les performances d'une base de données
    Bonjour,

    ma question porte sur les moyens d'optimisation d'une base de données postgreSQL 8.4, ca fait bien quelques semaines que je travaille dessus, l'essentiel de ma base est un ensemble de procédures stockées qui contiennent pas mal de select, d'Insert, d'update et de delete. heureusement je suis passée en terme de transactions vers ma base de 45 req/s -> 300 -> 750 (approximatives), mais je suis censé atteindre les 1200 req/s, alors j'ai essayé de passer par l'indexation des colonnes de certaines de mes tables ou les clauses "where" sont utilisées fréquemment , mais ce qui est bizarre c'est que ca n'a fait qu'empirer la situation, je suis revenu à 600 req/s ,alors j'aimerais avoir quelques directives la dessus, ou bien s'il y a d'autres moyens de réglages "SOFT" pour optimiser ma base de données.Merci à tous.

    Passer une agréable journée.

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Déjà fait de l'optimisation niveau serveur Postgresql, avant d'essayer d'en faire dans ton modèle de données
    Regarde notamment les paramètres sur les ressources :
    https://postgresql.developpez.com/do...tion/francais/
    Il faut très souvent les augmenter car les valeurs par défaut sont insuffisantes
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Ne jamais oublier que tous les SGBDR fonctionnent de la même façon (sauf MySQL) et traitent les données exclusivement en RAM. Donc, privilégier beaucoup la RAM (préférez donc le 64 bits) puis ensuite le disque. Le CPU n'intervient qu'en 3e position, d'autant que PG ne sait pas traiter ses requêtes en parallèle.

    Enfin comme le dit ratata, les réglages standard ont été conçu à une époque ou l'install standard était de 2 Go de RAM....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur TIC
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur TIC
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut
    Bonjour,

    Merci à tous , scheu je crois que il faut faire attention par rapport à certains paramètres qu'il ne faut pas augmenter comme par exemple le shared buffer.
    SQLPro pour prévilégier la RAM, il y a vraiment une panoplie de paramètres qui se rapportent à la RAM, j'essayerai d'en trouver les bons.

    Bonne journée.

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 245
    Par défaut
    Bonjour

    (Ne jamais oublier que tous les SGBDR fonctionnent de la même façon
    (sauf MySQL) et traitent les données exclusivement en RAM

    C'est faux
    C'est Le système qui gère ou décide des écritures en différées en fonction
    de ses propres paramètres instruits.

    Le CPU n'intervient qu'en 3e position: C'est faux
    Le taux de transfert des contrôleurs est fortement lié
    à la puissance du cpu utilisé.

    d'autant que PG ne sait pas traiter ses requêtes en parallèle:
    C'est plus que faux, Lisez le code source vous trouverez certaines fonctions
    qui utilisent les ipcs ,les forks ou les threads.

    Le SQL est géré automatiquement en parallèle si une cohérence progressive
    est établie.

    Désolé là, il est impossible de laisser passer ça ...

    Cordialement

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur TIC
    Inscrit en
    Mars 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur TIC
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2010
    Messages : 93
    Par défaut
    Merci Bustaf, je tacherais de vérifier ces corrections mais par rapport à ma question bustaf, qu'est ce que vous pouvez dire la dessus ...

    bonne journée.

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par bustaf Voir le message
    Bonjour

    (Ne jamais oublier que tous les SGBDR fonctionnent de la même façon
    (sauf MySQL) et traitent les données exclusivement en RAM

    C'est faux
    C'est Le système qui gère ou décide des écritures en différées en fonction
    de ses propres paramètres instruits.
    C'est le SGBDR qui décide du moment opportun de l'écriture physique des données et cela de manière planifiée. Les écritures physiques des données étant asynchrone.

    Le CPU n'intervient qu'en 3e position: C'est faux
    Le taux de transfert des contrôleurs est fortement lié
    à la puissance du cpu utilisé.
    Ce que vous dite peut être vrai pour un desktop, mais pas pour un serveur et encore moins dans une game spécialement conçue pour les SGBDR !

    d'autant que PG ne sait pas traiter ses requêtes en parallèle:
    C'est plus que faux, Lisez le code source vous trouverez certaines fonctions qui utilisent les ipcs ,les forks ou les threads.
    Là vous dites n'importe quoi. C'est la grande différence qui existe entre Oracle, SQL Server et IBM DB2 d'un côté et PostGreSQL de l'autre. Aucune requête ne peut actuellement faire des process parrallélisé dans PG, à la différence de SQL Server par exemple ou un simple SUM sur une machine avec 4 CPU lance 4 threads distincts pour faire chacun 1/4 du travail de la requêt e finale.

    Le SQL est géré automatiquement en parallèle si une cohérence progressive
    est établie.

    Désolé là, il est impossible de laisser passer ça ...

    Cordialement
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par ratata Voir le message
    Bonjour,

    Merci à tous , scheu je crois que il faut faire attention par rapport à certains paramètres qu'il ne faut pas augmenter comme par exemple le shared buffer.
    SQLPro pour prévilégier la RAM, il y a vraiment une panoplie de paramètres qui se rapportent à la RAM, j'essayerai d'en trouver les bons.

    Bonne journée.
    Les plus importants à mon sens (ça n'engage que moi) :
    - shared_buffers (1/4 maximum de la RAM disponible pour Postgresql)
    - work_mem (tu peux monter jusqu'à 256 Mo mais attention car chaque session simultanée pourra consommer jusqu'à cette valeur donc saturation de la RAM si trop de sessions concurrentes)
    maintenance_work_mem : tu peux mettre au moins 128 Mo si tu as suffisamment de RAM, c'est pour les tâches de maintenance (reindex, vacuum, ...)
    - wal_buffers : je mets toujours 512 Ko
    - random_page_cost : mettre 2.0 voir moins si tu as des disques très rapides, ça favorise les full scan plutôt que les accès par index ce qui généralement est préférable si ta volumétrie n'est pas énorme
    - effective_cache_size (environ la moitié de la RAM disponible pour Postgresql)

    Après, calcul régulièrement tes statistiques (autovacuum ou vacuumdb), voir des reindexdb

    Après il faut coupler les problèmes de perfs avec la supervision OS : consommation de la mémoire (swap ?), utilisation CPU, I/O sur tes disques, ...
    Ca te servira généralement à identifier plus facilement les requêtes longues, et pouvoir après voir comment les optimiser
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier les performances d'une base
    Par gold15 dans le forum Débuter
    Réponses: 6
    Dernier message: 08/02/2011, 18h29
  2. comment augmenter les performances d'une application
    Par jasminblanc dans le forum Firebird
    Réponses: 1
    Dernier message: 17/07/2007, 19h39
  3. Que faire lorsque les performances d'une base chute ?
    Par Doctor Z dans le forum Oracle
    Réponses: 11
    Dernier message: 16/02/2005, 14h38
  4. Réponses: 4
    Dernier message: 29/11/2004, 16h51
  5. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo