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: |
Résumé:
Cet article montre comment acc�l�rer une base de donn�es PostgreSQL en utilisant la RAM.
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.
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.
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
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.
Site Web maintenu par l´équipe d´édition LinuxFocus
© Mark Nielsen LinuxFocus 1999 |
1999-11-15, generated by lfparser version 0.7