por Mark Nielsen Sobre el Author: El autor trabaja en The Computer Underground, Inc. como experto en Linux y se divierte haciendo tonterias y proyectos tontos, porque, ¡vaya!, los ordenadores SE SUPONE que son divertidos. Mark también trabaja en ZING, www.genericbooks.com como voluntario para ayudar y promover el software y las publicaciones libres y abiertas. Contenidos: |
Resumen:
Este artículo muestra como acelerar un servidor de bases de datos PostgreSQL usando un disco ram (RAMDISK).
Un ramdisk es básicamente memoria que pretendes usar como si fuera una unidad de disco duro. En cualquier momento que usas un ramdisk, básicamente estás usando tu memoria y no tu disco duro. Hay ventajas y desventajas de esta aproximación. Fundamentalmente, la gran ventaja es que dado que estás usando memoria, cualquier cosa que estés haciendo será mucho más rápida dado que el disco duro es más lento que la memoria. La gran desventaja es que si haces cambios en el servidor de bases de datos y reinicias el ordenador, perderás todos los cambios.
En el caso del servidor de bases de datos PostgreSQL, podrás aumentar la velocidad si colocas todas las bases de datos en memoria.
mkdir -p /Test mkfs -t ext2 /dev/ram0 mount /dev/ram0 /TestPara cambiar el tamaño del ramdisk a 50MB, haz lo siguiente:
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
Si hubieses añadido esas 3 lineas al fichero /etc/rc.d/rc.local, se ejecutarían cada vez que arrancases el ordenador.
NOTE: Aquí asumiremos que tu has fijado la opción "ramdisk" en el lilo.conf a un tamaño mayor del que tiene tu servidor de bases de datos. Si necesitas averiguar el tamaño aproximado, ejecuta este comando "cd /var/lib/pgsql; du ".
De todas maneras, para coger tu servidor postgresql instalado en "/var/lib/pgsql" y ponerlo en memoria, haz lo siguiente:
### Detener el servidor postgres real /etc/rc.d/init.d/postgres stop ### Renombrar el directorio real mv /var/lib/pgsql /var/lib/pgsql_main #### Crear un directorio para tener ahí nuestro disco ram mkdir -p /var/lib/pgsql_memory #### Cambiar el propietario del nuevo directorio a posgres o cualquiera #### que sea el dueño real. chown postgres /var/lib/pgsql_memory #### Crear un alias o un enlace al nombre original, /var/lib/pgsql ln -s /var/lib/pgsql_memory /var/lib/pgsql #### Formatea el ramdisk mkfs -t ext2 /dev/ram0 #### Monta el ramdisk en el directorio postgresql mount /dev/ram0 /var/lib/pgsql_memory #### Copia todo del directorio principal al ramdisk tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp ### Arranca el servidor postgresql actual /etc/rc.d/init.d/postgres start
Lo que se puede notar es que cuando los datos son "cacheados" por el sistema, la ganancia en velocidad no es muy elevada, cerca del 10% o el 20%. Cuando se introducen muchos datos únicos dentro de la base de datos, la velocidad crece drasticamente.
La mayor ventaja del truco del ramdisk es que obligas a la base de datos a permanecer en memoria y evitas usar el disco duro. Si no usas un ramdisk, tu base de datos probablemente a la larga sea "swapeada" fuera de la caché, y entonces cuando vuelva a ser usada, tendrá que ser recargada desde el disco duro.
Contactar con el equipo de LinuFocus
© Mark Nielsen LinuxFocus 1999 |
Translation information:
|
1999-12-17, generated by lfparser version 0.6