original in en Mark Nielsen
en to de Jens Link
Der Autor arbeitet für The Computer Underground, Inc. als Linux-Profi, freut sich über alberne Dinge und denkt sich sinnlose Projekte aus. Warum? Weil Computer Spaß machen sollen. Mark arbeitet außerdem für ZING, www.genericbooks.com as freiwilliger Mitarbeiter um freie software und freie Literatur zu unterstützen.
Eine RAMDISK ist eigentlich nichts anderes als ein Speicherbereich, den sie wie eine normale Festplatte benutzen können. Jedesmal wenn sie nun auf die RAMDISK zugreifen, greifen sie auf den Arbeitsspeicher ihres Computers und nicht auf die Festplatte zu. Dies hat Vor- und Nachteile. Der größte Vorteil ist, da sie auf das RAM des Computer zugreifen alles wesentlich schneller ist, da ja Speicherzugriffe wesentlich schneller als Festplattenzugriffe sind. Der große Nachteil ist allerdings, dass alle Änderungen an den Daten bei einem Neustart des Computers verloren gehen.
Für PostgreSQL bedeutet dies, das er schneller wird, wenn sie alle Daten in den Speicher laden.
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /TestWenn dies fehlschlägt, haben sie wahrscheinlich keine RAMDISK Unterstützung in ihren Kernel mit eingebunden. Aktivieren sie CONFIG_BLK_DEV_RAM in ihrer Kernel Konfiguration und übersetzen sie den Kernel neu.
Mit Hilfe der obigen Befehle wird eine knapp 4MB große RAMDISK angelegt. Wenn sie diese auf z.B. 50MB vergrößern wollen, lesen sie in den Ramdisk Artikel.
Bemerkung:Ich gehe davon aus, das sie die RAMDISK Option in der lilo.conf größer eingestellt haben als ihren Datenbankserver. Wenn sie die ungefähre Größe ihrer Datenbank feststellen wollen benutzen sie den Befehl " /cd/var/lib/pgsql;du " .
Um ihre Datenbank, die in /var/lib/pgsql installiert ist in eine RAMDISK zu installieren, müssen sie wie folgt vorgehen:
### Stoppen des laufenden Datenbankservers /etc/rc.d/init.d/postgres stop ### Umbenennen des aktuellen Verzeichnisses mv /var/lib/pgsql /var/lib/pgsql_main ### Erstellen des Verzeichnisses für die RAMDISK mkdir /var/lib/pgsql_memory ### Ändern des Besitzers des neuen Verzeichnisses auf postgres (oder wer ### auch immer der eigentliche Eigentümer auch ist) chown postgres /var/lib/pgsql_memory ### Erstellen einer Verknüpfung auf /var/lib/pgsql ln -s /var/lib/pgsql_memory /var/lib/pgsql ### Formatieren der RAMDISK mkfs -t ext2 /dev/ram0 ### Mounten der RAMDISK mount /dev/ram0 /var/lib/pgsql_memory ### Kopieren aller Daten auf die RAMDISK tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp ### Starten von PostgreSQL /etc/rc.d/init.d/postgres start
Bei meinen Tests fiel mir auf, dass wenn die Daten vom Betriebsystem gecached werden der Geschwindigkeitszuwachs nur zwischen 10 und 20% liegt. Wenn viele gleiche Daten in die Datenbank eingegeben werden ist der Geschwindigkeitszuwachs dramatisch.
Der große Vorteil dieses "Ramdisk Tricks" besteht darin, dass sie den Datenbankserver zwingen im Speicher zu bleiben und so Zugriffe auf ihre Festplatte vermeiden. Wenn sie die Ramdisk nicht benutzen, könnte es sein das ihr Datenbankserver ausgelagert wird, und wenn sie ihn später wieder benötigen, muß er erst von der Festplatte geladen werden.