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 :

[tablespace]Déclarer un tablespace en RAM?


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut [tablespace]Déclarer un tablespace en RAM?
    Bonjour tout le monde,

    dans le doc de postgreSQL8 il est dit, je cite:
    Deuxièmement, les espaces logiques permettent à un administrateur d'utiliser sa connaissance des objets de la base pour optimiser les performances. Par exemple, un index qui est très utilisé peut être placé sur un disque très rapide et disponible, comme un périphérique mémoire. En même temps, une table stockant des données archivées et peu utilisée ou dont les performances ne portent pas à conséquence pourrait être stockée sur un disque système plus lent, moins cher.

    Pour définir un espace logique, utilisez la commande CREATE TABLESPACE, par exemple :

    CREATE TABLESPACE espace_rapide LOCATION '/mnt/sda1/postgresql/data';
    La question que je pose est donc simple: comment faire pour déclarer un espace logique dans la Ram du serveur que ce soit sous windows ou unix?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    Salut,

    une question tres interressante, en fait ce n'est pas tres compliqué sous linux, il suffit de monter une partition ramfs (ici 100Mo)
    sur le principe ca donnerai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mkdir /mnt/maram
    mount -t ramfs none /mnt/maram -o maxsize=100000
    et dans pg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLESPACE tbl_en_ram LOCATION '/mnt/maram';
    sous windows, ca doit etre sensiblement la meme chose, regarde du coté de ramdrive (a l'epoque sous dos, mais je sais pas si ca existe encore)

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    j'ai une question (surement stupide) mais je ne comprends pas dans quel utilisation on peut avoir besoin de stocker des tables dans de la mémoire RAM à moins d'être sur que le serveur ne redémarre pas (prévention électrique et matérielle) car sinon c'est la perte des données, non ?

  4. #4
    Membre Expert
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Par défaut
    Si cela peut etre utile par exemple si tu as une grosse table qui est qu'en lecture seule, tu fais souvent des requetes dessus tu as un gain de vitesse non négligable.
    La RAM ne coute plus trop chere, HP propose meme un systeme pour mettre de la ramdrive jusqu'a 32Go !!! (mais par contre là c'est tres cher)

    Quand tu relance ton serveur, tu duplique les tables du HD dans la tablespace en ram, et apres ca roule, normalement un serveur ne doit pas redemarrer tous les matins (nota, la derniere fois que j'ai reboot le serveur pg : uptime >> 220 days ), alors le dump en ram ne doit pas etre trop problematique.

    une technique ramdrive souvent employee est la creation des indexs en ramdrive et non pas les tables, apres tout depend de ce que tu souhaite faire.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Par défaut
    ouais je vois ce que tu veux dire : c'est pour ça que je posais la question car je me doute qu'au niveau rapidité ce n'est pas négligeable.

    Avec les tables en lecture seule, c'est clair que le risque n'est pas important de perdre des données.

    En tout cas merci pour toutes ces précisions car je pense que ça pourra être fortement utile pour la suite de mon projet.

    ++

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Par défaut
    Juste une précision, est-il possible de mettre une table en mémoire si l'on a pas accès à la configuration du serveur (hébergement mutualisé par exemple) ?

    Un peu comme le type HEAP sous mysql.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Par défaut
    Ok, merci, je vois l'idée.

    Je rebondis donc sur la réponse: est-ce que, si je mets un trigger sur la table que je charge en RAM pour que chaque INSERT soit dupliqué dans un doublon de la table mais cette fois -ci sur disque dur (en supposant bien sûr que les INSERT ne soient pas trop fréquents), la solution est valide et permet d'obtenir un gain intéressant en temps de réponse?

    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/01/2008, 14h14
  2. tablespace sur windows
    Par testeur dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/10/2004, 10h04
  3. Gestion de tablespace
    Par blids dans le forum Administration
    Réponses: 20
    Dernier message: 24/09/2004, 09h45
  4. Comment déplacé un index de tablespace?
    Par superfly dans le forum Administration
    Réponses: 4
    Dernier message: 10/08/2004, 13h56
  5. unable to create INITIAL extent for segment in tablespace
    Par Ludolitaliano dans le forum Administration
    Réponses: 4
    Dernier message: 11/09/2003, 16h43

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