Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 917

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Database-SQL-RDBMS HOW-TO document for Linux (PostgreSQL Object Relational Database System): Tuning - Come migliorare le prestazioni del server PostgreSQL</TITLE>
 <LINK HREF="PostgreSQL-HOWTO-9.html" REL=next>
 <LINK HREF="PostgreSQL-HOWTO-7.html" REL=previous>
 <LINK HREF="PostgreSQL-HOWTO.html#toc8" REL=contents>
</HEAD>
<BODY>
<A HREF="PostgreSQL-HOWTO-9.html">Avanti</A>
<A HREF="PostgreSQL-HOWTO-7.html">Indietro</A>
<A HREF="PostgreSQL-HOWTO.html#toc8">Indice</A>
<HR>
<H2><A NAME="s8">8. Tuning - Come migliorare le prestazioni del server PostgreSQL</A></H2>

<P>Generalmente il server database &egrave; un box autonomo connesso alla rete.
Poich&eacute; il server database &egrave; il solo processo unix funzionante sulla CPU, potete
fare svariate ottimizzazioni per aumentare la produttivit&agrave; del server.
<H2><A NAME="ostune"></A> <A NAME="ss8.1">8.1 Messa a punto del SO, per il server Database </A>
</H2>

<P>Per ottenere pi&ugrave; potenza elaborativa, da una data CPU, fate quanto segue:-
<UL>
<LI> Ricompilate il kernel di linux per renderlo pi&ugrave; piccolo e snello. Eliminate le voci
che non vengono utilizzate. Leggete il kernel
howto situato presso 
<A HREF="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html">http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html</A>
<P>
</LI>
<LI> Chiudete i processi unix non necessari: eseguite chkconfig su sistemi linux/unix
<HR>
<PRE>
bash$ su - root
bash# man chkconfig
bash# chkconfig --help
bash# chkconfig --list | grep on | less
Ora, dalla lista cos&igrave; ottenuta, mettete off i processi che volete lasciar disattivati al boot:
bash# chkconfig --level 0123456 &lt;nome servizio> off
La prossima volta, al boot della macchina, questi servizi non verranno inizializzati.
Ora chiudete manualmente i servizi che avete disattivato.
bash# cd /etc/rc.d/init.d
bash# ./&lt;nome servizio> stop
</PRE>
<HR>

<P>
</LI>
<LI> Non fate girare altri processi applicativi che non siano necessari.
<P>
</LI>
<LI> Non lasciate girare X-Window a vuoto, inutilizzato. Infatti i processi di X-window
consumano memoria, appesantiscono la CPU, e possono essere una seria falla nella sicurezza, favorendo attacchi esterni.
I window manager, che X-window generalmente usa, sono: KDE, GNOME, CDE, XDM, e altri.
Dovete uscire da X-window immediatamente dopo averlo utilizzato e, per la maggior parte del tempo,
la macchina del server database dovrebbe presentare a video solo la console,
con la linea di comando fissa sul prompt di login.</LI>
</UL>
<H2><A NAME="ostune"></A> <A NAME="ss8.2">8.2 Come ottimizzare il processo del server Database</A>
</H2>

<P>Suggerimenti di carattere generale per l'ottimizzazione:
<UL>
<LI> Gli indici possono velocizzare le interrogazioni. Il comando <B>explain</B> vi permette
di verificare il modo in cui PostgreSQL sta interpretando la vostra interrogazione, e quali indici
stia usando.</LI>
<LI> Usate il comando <B>cluster</B> per raggruppare i dati nelle tabelle di base secondo la corrispondenza con
un indice. Leggete la pagina di manuale <B>man cluster(1)</B> per maggiori dettagli.</LI>
<LI> Se state effettuando un gran numero di inserimenti, considerate la possibilit&agrave; di farli mediante un solo grande
processo batch, usando il comando <B>copy</B>. &Egrave; molto pi&ugrave; rapido che effettuare inserimenti individuali.</LI>
<LI> Le istruzioni non comprese in un blocco-transazione <B>begin work/commit</B>,
vengono considerate come fossero in una propria transazione. Considerate la possibilit&agrave; di raccogliere pi&ugrave;
istruzioni in un unico blocco-transazione. Ci&ograve; riduce
l'overhead della transazione. Verificate anche la possibilit&agrave; di ricreare gli indici, quando
vengono effettuate vaste variazioni dei dati.</LI>
<LI> &Egrave; consigliato l'acquisto del "Performance Tuning guide", e
il "tuning support" (l'assistenza all'ottimizzazione), dalla 
<A HREF="http://www.postgresql.org">PostgreSQL Corp.</A>.</LI>
</UL>
<P>Suggerimenti di carattere specialistico per l'ottimizzazione:
<P>
<UL>
<LI> L'ottimizzazione interna di PostgreSQL &egrave; un argomento complesso; per affrontarla serve una
conoscenza profonda del codice sorgente e del funzionamento interno di postgresql. &Egrave; molto
raccomandabile che i seguenti suggerimenti specialistici siano provati soltanto da professionisti:</LI>
<LI> Potete disabilitare <B>fsync()</B>, inizializzando
il postmaster con l'opzione <B>-o -F</B>. Ci&ograve; impedir&agrave; ad <B>fsync()</B>
di effettuare il flushing dopo ogni transazione. Tuttavia esistono rischi di perdita
dei dati, dovuti a tensione elettrica mancante, o ad errori di lettura del mezzo di memorizzazione.
Potete ridurre il rischio di perdita dei dati dovuti a mancanza di tensione, usando
un 
<A HREF="http://apc.com/products/ups.cfm">APC UPS</A>
(Uninterrupted Power Supply=fornitore di potenza senza interruzioni); e potete usare i sistemi di dischi RAID
(
<A HREF="http://www.linuxdoc.org/HOWTO/Antares-RAID-sparcLinux-HOWTO/index.html">Antares-Sparc-Raid</A>
<A HREF="http://www.linuxdoc.org/HOWTO/Software-RAID-HOWTO.html">Software-Raid</A>
<A HREF="http://www.linuxdoc.org/HOWTO/Software-RAID-0.4x-HOWTO.html">Old-Software-Raid</A>
<A HREF="http://www.linuxdoc.org/HOWTO/Root-RAID-HOWTO.html">Root-Raid</A>
<A HREF="http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html">Boot-Root-Raid</A>)
come protezione dai guasti dovuti al mezzo di memorizzazione.</LI>
<LI> Usate l'opzione <B>-B</B> di postmaster per aumentare il numero di
buffer di memoria condivisa, usata dai processi del back-end. Se rendete troppo
grande questo parametro, postmaster potrebbe non partire perch&eacute; potreste aver superato
i vostri limiti, sullo spazio di memoria condivisa, imposti dal kernel. Ogni buffer &egrave; di 8K, ed il valore predefinito &egrave; di 64 buffer.</LI>
<LI> Usate l'opzione <B>-S</B> del back-end per incrementare l'ammontare
massimo di memoria, usata da ogni processo di backend, per gli ordinamenti temporanei.
Il valore <B>-S</B> &egrave; misurato in kilobyte, ed &egrave; predefinito a 512 (cio&egrave; 512K).
Non &egrave; saggio rendere troppo grande questo valore, perch&eacute; potreste terminare la memoria quando
l'interrogazione richiede diversi ordinamenti concorrenti.</LI>
</UL>
<P>
<HR>
<A HREF="PostgreSQL-HOWTO-9.html">Avanti</A>
<A HREF="PostgreSQL-HOWTO-7.html">Indietro</A>
<A HREF="PostgreSQL-HOWTO.html#toc8">Indice</A>
</BODY>
</HTML>