Sommaire Carte Index Recherche Nouvelles Archives Liens A propos
[Barre Superieure]
[Barre Inferieure]
[Photo de l'Auteur]
par Mark Nielsen

L´auteur:

L'auteur travaille à Computeur Underground Inc, en tant qu'expert Linux. Il adore faire des choses ridicules et élaborer des projets ridicules, parce que... Eh! Les ordinateurs sont SUPPOSES être cools. Mark travaille aussi à ZING, www.genericbooks.com où il s'est proposé comme volontaire pour promouvoir le logiciel libre, la libre circulation des sources ainsi que toute la littérature correspondante.

Sommaire:

Accélérer des petites bases de données sous Linux

[Illustration]

Résumé:

Cet article montre comment accélérer une base de données PostgreSQL en utilisant la RAM.



 

Introduction

Bon, qu'est ce que la RAM? Comment pouvons nous l'utiliser de manière à accélérer un serveur de données tel que PostgreSQL?

La RAM est en fin de compte de la mémoire que vous utilisez comme un disque dur. Chaque fois que vous vous en servez, vous court-circuitez l'enregistrement sur votre disque dur. En fait, quoique vous fassiez en utilisant la RAM, cela sera beaucoup plus rapide car l'accès au disque dur est plus lent. Mais son inconvénient majeur réside dans le fait que les changements effectués sur le serveur de la base de données seront entièrement perdus si vous reboutez votre ordinateur.

Pour le serveur de données, PostgreSQL, si vous chargez toutes les bases de données dans la mémoire, vous allez augmenter la rapidité d'exécution.

 

Montage d'un disque de RAM dans /Test

Pour monter le répertoire /Test sur un point de montage d'un disque de la RAM, il faut faire:

mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test

Si cela ne marche pas, c'est que vous n'avez pas compilé le noyau avec l'option supportant la RAM.
Pour la configuration du noyau, il faut sélectionner comme option: CONFIG_BLK_DEV_RAM.

Les commandes ci-dessus ne vous permettent que d'avoir un peu moins de 4Mb de RAM pour le point de montage. Jetez un coup d'oeil à l'article "Ramdisk" pour voir comment obtenir 50Mb.

 

Utiliser la RAM pour PostgreSQL

L'idéal serait que vous ayez 2 serveurs de bases de données. Le premier où vous ferez vos modifications. Le deuxième serait une copie placée dans la RAM. Pour ce faire, vous utiliserez des commandes comme "pg_dump" ou "pg_dumpall"

REMARQUE: Nous supposons que vous avez mis dans votre fichier lilo.conf, l'option pour avoir un disque de RAM plus gros que le serveur de la base de données. Si vous avez besoin de connaître la taille approximative, passez la commande "cd /var/lib/pgsql ; du"

Malgré tout, pour avoir votre serveur PostgreSQL courant installé dans le répertoire "/var/lib/pgsql" et pour qu'il soit monté sur la RAM vous devez taper:

     ###Arrêt du serveur PostgreSQL courant
/etc/rc.d/init.d/postgres stop
     ###Changement de nom du répertoire pgsql
mv /var/lib/pgsql /var/lib/pgsql_main
     ###Création d'un répertoire pour monter la RAM
mkdir -p /var/lib/pgsql_memory
     ###Changement de propriétaire pour le répertoire pgsql_memory
     ###Le nouveau est postgre
chown postgre /var/lib/pgsql_memory
     ###création du lien sur le nom initial /var/lib/pgsql
ln -s /var/lib/pgsql_memory /var/lib/pgsql
    
     ###Formatage du disque de la RAM
mkfs -t ext2 /dev/ram0
     ###Montage du disque sur le répertoire de Postgresql 
mount /dev/ram0 /var/lib/pgsql_memory
    
    ###Recopie de tout le répertoire principal dans la RAM
tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp
    ###Démarrage du serveur courant Postgresql
/etc/rc.d/init.d/postgres start
 

Commentaires sur la rapidité

J'ai essayé de tester la rapidité avec ou sans PostgreSQL dans la RAM. Il est parfois 50% plus rapide, d'autre fois non.

J'ai remarqué que, lorsque le système met des données dans la mémoire cache, le gain n'est pas énorme: approximativement 10 ou 20%. Lorsqu'il y a beaucoup de données isolées qui doivent recherchées dans la base (de données), les performances croissent incroyablement.

Le plus grand avantage avec l'astuce de la RAM consiste dans le fait de forcer la base de données à rester en mémoire en évitant d'utiliser le disque dur. Si vous n'employez pas cette méthode, inévitablement, les données vont sortir de la RAM, il vous faudra alors, au moment de les réutiliser, les recharger à partir du disque dur.

 

Commentaires

  1. En ce qui concerne le système d'exploitation Linux, Il semble qu'une fois le fichier lu, ce dernier est gardé en mémoire jusqu'à ce qu'autre chose vienne le remplacé. Bon, cela me semble être une bonne solution si ce n'est qu'à chaque fois que mon serveur de base de données est sollicité, j'entends mon disque dur tourner. En utilisant la RAM, le serveur de données est forcé de rester en mémoire: il ne peut pas "s'échapper". Si vous devez beaucoup utiliser votre base de données, je vous conseille cette méthode.
  2. Les avantages de l'utilisation de la RAM sont: la rapidité, la clarté, la simplicité. Si les bases de données ne sont exploitées qu'en lecture, c'est vraiment cool.
  3. Les inconvénients sont que vous devez savoir comment la maintenir et si vous apportez des changements soyez sûr d'en avoir fait des sauvegardes.
 

Références

  1. Comment utilisez la RAM sous Linux par Mark Nielsen par Mark Nielsen
  2. Site de PostgreSQL

Site Web maintenu par l´équipe d´édition LinuxFocus
© Mark Nielsen
LinuxFocus 1999

1999-11-15, generated by lfparser version 0.7