original in en Mark Nielsen
en to nl Egon Willighagen
De auteur werkt bij The Computer Underground, Inc. en is Linux fan. Hij houdt ervan om gekke dingen met Linux te doen en rare projecten te verzinnen. En waarom? Met computers werken HOORT te gek te zijn. Ook werkt hij als vrijwilliger bij ZING, www.genericbooks.com om gratis en vrij beschikbare software en literatuur te promoten.
Een ramdisk is eigenlijk gewoon intern geheugen dat zich voor doet als ware het een harde schijf. Telkens als je iets naar de ramdisk schrijft, wordt dit bewaard in het interne geheugen. Dit heeft voor- en nadelen. Het grote voordeel is dat opslag in het interne geheugen veel sneller is dan opslag op de harde schijf. Maar het nadeel is dat het interne geheugen bij het opnieuw opstarten van de computer gewist wordt, zodat veranderingen niet zonder meer bewaard kunnen worden.
Dit betekent, dat als de database gegevens enkel tijdelijk op een ramdisk gezet worden, dit de database server kan versnellen zonder dat we de veranderingen verliezen.
mkdir -p /mnt/ramdisk mkfs -t ext2 /dev/ram0 mount /dev/ram0 /mnt/ramdiskDe grootte van de ramdisk kan (en moet vaak) aangepast worden aan uw eigen wensen. Dit kan als volgt.
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.2.5-15 label=linux root=/dev/hda2 read-only ramdisk=50000
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /Test
U kunt deze drie regels beter toevoegen aan /etc/rc.d/rc.local. Dan wordt de ramdisk elke keer aangemaakt als de computer opstart. (Dit geldt voor RedHat systemen. Het werkt waarschijnlijk ook op andere systemen maar niet op Debian).
NOOT: We gaan er vanaf nu vanuit dat de omvang van de ramdisk zoals u die in lilo.conf heeft opgegeven, groter is dan de grootte van de database. U kunt de grootte opvragen met het commando "cd /var/lib/pgsql; du ".
Hierna kunt u de huidige postgresql server die geïnstalleerd is in de directory in "/var/lib/pgsql", op de ramdisk installeren met de volgende commando's:
### Stop de huidige postgresql server /etc/rc.d/init.d/postgres stop ### Hernoem de huidige installatie directory mv /var/lib/pgsql /var/lib/pgsql_main ### Maak een directory waaronder uw ramdisk staat mkdir -p /var/lib/pgsql_memory ### Wijzig de eigenaar van de nieuwe directory naar postgres ### Of de eigenlijke eigenaar chown postgres /var/lib/pgsql_memory ### Maak een link van de originale directory naar de nieuwe dir ln -s /var/lib/pgsql_memory /var/lib/pgsql ### Formatteer de ramdisk mkfs -t ext2 /dev/ram0 ### Verbindt de ramdisk met de nieuwe postgresql directory mount /dev/ram0 /var/lib/pgsql_memory ### Kopieer alles uit de echte postgresql directory naar de ramdisk tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp ### Start de postgresql server opnieuw /etc/rc.d/init.d/postgres start
Hierbij merkte ik op dat de winst slechts 10 to 20% bedraagt wanneer de data gecached is en dus al in het geheugen staat. Wanneer er veel data opgevraagd wordt, neemt de winst enorm toe.
Het grootste voordeel van het gebruik van een ramdisk, is dat het gebruik van de relatief trage harde schijf wordt vermeden. Zonder het gebruik van een ramdisk kan de database in de cache belanden maar er ook weer uit verwijderd worden. Als er daarna gegevens opgevraagd worden, moeten deze vanaf de harde schijf geladen worden.