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 :

base presque saturée


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 55
    Par défaut base presque saturée
    Bonjour,
    Je travaille sous Postgres, j'ai une base de données de 100 tables et j'ai des tables avec des millions d'enregistrements, ce qui bouffe énormement la mémoire dans les applications.
    Ça rame beaucoup, ça prend beaucoup de temps pour générer une page.
    Je voulais savoir s'il y a une solution pour diminuer les enregistrements de la table, c'est-à-dire par exemple créer une autre base avec les mêmes tables qui possèdent le plus d'enregistrement. Et dans cette base ne faire migrer que les enregistrements qu'on utilise plus, et garder les enregistrements qui datent de 3 ans et tout le reste, le migrer vers l'autre base.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par souf_87 Voir le message
    j'ai une base de données de 100 tables
    Ça fait beaucoup !
    Le modèle de données est-il optimisé ?

    et j'ai des tables avec des millions d'enregistrements
    Ça commence à faire beaucoup en effet ! Mais ce n'est pas encore énorme pour une BDD optimisée.

    je voulais savoir est ce qu'il a une solution pour diminuer les enregistrements de la table,c'est à dire par exemple creer une autre base avec les meme tables qui possèdent le plus d'enregistrement. et dans cette base ne faire migré que les enregistrement qu on utilise plus, et garder les enregistrement qui date depuis 3ans et tout le reste le migré vers l'autre base
    Oui bien sûr !
    Plutôt qu'une autre BDD, si ça doit être sur le même serveur, il vaut peut-être mieux utiliser un autre schéma dans la même BDD. Ainsi tu pourras requêter sur les deux schémas si tu as besoin d'analyser des données anciennes avec les récentes.

    À toi de déterminer quelles sont les lignes (et pas enregistrements ! ) des tables à migrer et de faire attention aux clés étrangères.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    100 tables, c'est franchement pas énorme. En règle générale mes bases ont ua minimum cela, voire beaucoup plus (uqleques centaines).
    Quelques millions de lignes ce n'est pas gênant, quelques une des bases sur lesquelles je travaille ont plusieurs centaines de millions et jusqu'à un milliard.

    Le secret pour que cela fonctionne bien est, dans l'ordre :
    1) le respect du modèle relationnel
    2) une RAM adéquat à la taille de la fenêtre de données
    3) une bonne indexation

    1) le respect du modèle relationnel
    Avez vous respecté toutes les formes normales (1, 2, 3, FNBC, 4, 5, FNDC...) ?
    Si ce n'est pas le cas, vous avez donc de la redondance et donc un volume de données trop important !
    Remodélisez !

    2) une RAM en adéquation
    Les données de toutes les requêtes manipulées dans le SGBDR doivent être en mémoire pour pouvoir être traité. Il n'est pas possible pour le SGBDR de traiter une requête si elle n'est pas en RAM. Dans le cas ou les données ne sont pas en RAM, le SGBRD commence par les y placer avant de faire la requête. SI votre RAM est trop juste cous consommez du disque. Or la différence de vitesse entre RAM et disque est de l'ordre de 1000 fois minimum (souvent 10000...)

    3) une bonne indexation
    Un index permet de réduire de manière logarithmique les lectures lors de recherches, des tris, des groupages notamment. En l'absence d'index, le coût et exponentiel !
    Lisez l'article que j'ai écrit sur l'indexation : http://sqlpro.developpez.com/cours/quoi-indexer/

    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 averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 55
    Par défaut
    Merci pour votre reponse
    Je voulais savoir aussi est ce qu'il a un logiciel a télécharger pour connaitre les requetes qui ramennent bcp de lignes,les requetes qui nécessitent de manipuler bcp de données dans la base de données comme v$sql ou AWR statspack sur oracle meme si je c pas comment il marche.
    Pour connaitre les statistiques

  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
    Bonsoir
    Lisez la section (EXPLAIN) dans la documentation.
    Cordialement

  6. #6
    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 souf_87 Voir le message
    Merci pour votre reponse
    Je voulais savoir aussi est ce qu'il a un logiciel a télécharger pour connaitre les requetes qui ramennent bcp de lignes,les requetes qui nécessitent de manipuler bcp de données dans la base de données comme v$sql ou AWR statspack sur oracle meme si je c pas comment il marche.
    Pour connaitre les statistiques
    Tu seras vite limité, au jour d'aujourd'hui sur Postgresql tu ne trouveras jamais un seul outil aussi performant que le Statpack/AWR d'Oracle.
    Il existe néanmoins quelques outils utiles qui peuvent te permettre, dans le meilleur des cas (seulement dans les dernières versions de Postgresql), de:
    - tracer les requêtes les plus longues et les sortir sous forme de rapport avec par exemple pgfouine
    - avoir les plans d'exécution de ces requêtes avec la contrib autoexplain
    - avoir les statistiques d'utilisation des différents objets (nb d'updates dans une table, nb de lignes ramenées au total issu de requêtes "select", nb d'accès I/O sur un index, ...) avec les vues système pg_stat_* et pg_statio_*

    Après, il faut coupler les points précédents avec la supervision OS (CPU, mémoire, disques) pour essayer de trouver les pistes d'optimisation possibles (réécriture de requêtes, ajout de RAM, ...)

    Bref les problèmes d'optimisation sont rarement simples à investiguer, d'autant plus sur Postgresql (comparé à des SGBDs payants comme Oracle qui disposent d'outils te sortant en quelques clics les requêtes les plus longues et le temps passé en CPU, I/O, ...)
    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/

Discussions similaires

  1. Connexion base firebird simultanée impossible (ou presque)
    Par engi dans le forum Connexion aux bases de données
    Réponses: 9
    Dernier message: 15/06/2013, 16h49
  2. Galaxy S2, Mémoire presque saturée
    Par JeanThiou dans le forum Android
    Réponses: 0
    Dernier message: 02/01/2013, 09h53
  3. Empêcher la saturation de sa base
    Par sourivore dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 10/06/2012, 22h11
  4. [ASE]saturation de la base après requête
    Par m@estro dans le forum Sybase
    Réponses: 3
    Dernier message: 05/10/2006, 19h16
  5. Saturation de la base de données oracle
    Par dzeus dans le forum Oracle
    Réponses: 5
    Dernier message: 29/08/2006, 18h54

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