Home Mappa Indice Ricerca Notizie Archivio Link A proposito di LF
[Barra Superiore]
[Barra Inferiore]
[Foto dell'autore]
di Mark Nielsen

L´autore:

L'autore lavora presso The Computer Underground, Inc. come guru di Linux e si diverte a fare cose folli e a realizzare progetti folli in quanto, ehi, si SUPPONE che i computer siano divertenti! Mark lavora anche alla ZING, www.genericbooks.com come volontario per aiutare a promuovere software e scritti liberi e aperti.

Contenuto:

Velocizzare piccoli database su Linux

[Illustratione]

Sommario:

Questo articolo mostra come velocizzare un server di database PostgreSQL usando un RAMDISK.



 

Introduzione

Bene, cos'è un RAMDISK e come lo si usa per velocizzare un server di database come PostgreSQL?

Un ramdisk è sostanzialmente memoria che viene usata come se fosse un disco fisso. Ogni volta che si usa un ramdisk, in realtà si usa memoria e non un disco fisso. Così facendo si hanno dei vantaggi e degli svantaggi. Il grosso vantaggio è che, usando memoria, tutte le operazioni che si fanno sono molto più veloci in quanto i dischi rigidi sono più lenti della memoria. Il grosso svantaggio è che se si fanno modifiche al server di database e si riavvia il computer, tutte le modifiche vengono perse.

Per quanto riguarda il server di database PostgreSQL, caricando tutti i database in memoria, se ne aumenterà la velocità.  

Preparare un ramdisk per /Test

Per preparare uno dei ramdisk di default nella directory /Test, procedete così.

mkdir -p /Test
mkfs -t ext2 /dev/ram0
mount /dev/ram0 /Test
Se questo non funziona potreste non avere il supporto per i ramdisk compilato nel Kernel. CONFIG_BLK_DEV_RAM è l'opzione di configurazione del Kernel che vi serve per attivarlo.

I comandi qui sopra creano un ramdisk con uno spazio disponibile di poco meno di 4Mb. Date un'occhiata all'Articolo sui Ramdisk per sapere come cambiare la dimensione a, per esempio, 50Mb.  

Preparazione di un ramdisk per PostgreSQL

Idealmente, occorrerebbero due server di database. Uno su cui salvare le modifiche, e l'altro come copia che risiede nel ramdisk. Per fare ciò, occorrerebbe usare comandi come "pg_dump" o "pg_dumpall".

NOTA: Si assume che abbiate inserito nel lilo.conf l'opzione del ramdisk per cambiarne la dimensione in modo che sia maggiore di quella dei vostri database. Per saperne la dimensione approssimativa, date il comando "cd /var/lib/pgsql; du ".

In ogni modo, per spostare il server installato in "/var/lib/pgsql" e metterlo in memoria, fate così:

        ### Ferma il server postgresql
/etc/rc.d/init.d/postgres stop
        ### rinomina la directory attuale
mv /var/lib/pgsql /var/lib/pgsql_main
        #### Crea una directory su cui montare il ramdisk
mkdir -p /var/lib/pgsql_memory
 	#### cambia il proprietario della nuova directory in postgres o qualunque
	#### sia il proprietario attuale
chown postgres /var/lib/pgsql_memory
	#### Crea un collegamento al nome originario, /var/lib/pgsql
ln -s /var/lib/pgsql_memory /var/lib/pgsql

	#### Formatta il ramdisk
mkfs -t ext2 /dev/ram0
	#### Monta il ramdisk nella directory di postgresql
mount /dev/ram0 /var/lib/pgsql_memory

	#### Copia tutto dalla directory principale nel ramdisk
tar -C /var/lib/pgsql_main -cp . | tar -C /var/lib/pgsql_memory -xp
        ### Riavvia il server postgresql
/etc/rc.d/init.d/postgres start

 

Commenti sulla velocità

Ho provato ad eseguire dei test della performance con e senza mettere postgresql in un ramdisk. A volte ho ottenuto dei miglioramenti di velocità del 50% quando postgresql era in un ramdisk, e altre volte no.

Ho notato che quando i dati si trovano nelle cache del sistema il guadagno di performance non è alto, circa il 10% o 20%. Quando ci sono molti dati distinti che vengono inseriti nel database, la performance cresce tantissimo.

Il più grosso vantaggio con il trucco del ramdisk è che si forza la permanenza del database in memoria e si evita di usare il disco fisso. Se non si usa il ramdisk, non può accadere che il database esca dalla cache e che quando viene usato nuovamente sia necessario ricaricarlo dal disco fisso.  

Commenti

  1. Nel sistema operativo Linux sembra che, una volta letto, un file rimanga in memoria finché quella memoria non è necessaria per qualcos'altro. Così, viene bufferizzato. Bene, questa potrebbe una soluzione, se non fosse che, dalla mia esperienza, quando il database viene usato, sento sempre muovere il disco fisso. Usando un ramdisk si forza la permanenza del database in memoria e così facendo esso non viene "swappato". Se si usa molto il server di database, io ne forzerei la permanenza in memoria.
  2. Il vantaggio di usare un ramdisk per il database è, semplicemente e chiaramente, la velocità. Per database in sola lettura questo è veramente efficace.
  3. Lo svantaggio è che occore sapere come mantenerlo e si fanno delle modifiche, occorre assicurarsi di salvare esplicitamente le modifiche fatte.
 

Riferimenti

  1. Come usare un Ramdisk per Linux di Mark Nielsen
  2. PostgreSQL homepage

Sito web mantenuto dal Team degli Editori di LinuxFocus
© Mark Nielsen
LinuxFocus 1999
Informazioni sulla traduzione:
en -> -- Mark Nielsen
en -> it Antonio Schifano

1999-12-01, generated by lfparser version 0.7