Avanti
Indietro
Indice
Generalmente il server database è un box autonomo connesso alla rete.
Poiché il server database è il solo processo unix funzionante sulla CPU, potete
fare svariate ottimizzazioni per aumentare la produttività del server.
Per ottenere più potenza elaborativa, da una data CPU, fate quanto segue:-
- Ricompilate il kernel di linux per renderlo più piccolo e snello. Eliminate le voci
che non vengono utilizzate. Leggete il kernel
howto situato presso
http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html
- Chiudete i processi unix non necessari: eseguite chkconfig su sistemi linux/unix
bash$ su - root
bash# man chkconfig
bash# chkconfig --help
bash# chkconfig --list | grep on | less
Ora, dalla lista così ottenuta, mettete off i processi che volete lasciar disattivati al boot:
bash# chkconfig --level 0123456 <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# ./<nome servizio> stop
- Non fate girare altri processi applicativi che non siano necessari.
- 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.
Suggerimenti di carattere generale per l'ottimizzazione:
- Gli indici possono velocizzare le interrogazioni. Il comando explain vi permette
di verificare il modo in cui PostgreSQL sta interpretando la vostra interrogazione, e quali indici
stia usando.
- Usate il comando cluster per raggruppare i dati nelle tabelle di base secondo la corrispondenza con
un indice. Leggete la pagina di manuale man cluster(1) per maggiori dettagli.
- Se state effettuando un gran numero di inserimenti, considerate la possibilità di farli mediante un solo grande
processo batch, usando il comando copy. È molto più rapido che effettuare inserimenti individuali.
- Le istruzioni non comprese in un blocco-transazione begin work/commit,
vengono considerate come fossero in una propria transazione. Considerate la possibilità di raccogliere più
istruzioni in un unico blocco-transazione. Ciò riduce
l'overhead della transazione. Verificate anche la possibilità di ricreare gli indici, quando
vengono effettuate vaste variazioni dei dati.
- È consigliato l'acquisto del "Performance Tuning guide", e
il "tuning support" (l'assistenza all'ottimizzazione), dalla
PostgreSQL Corp..
Suggerimenti di carattere specialistico per l'ottimizzazione:
- L'ottimizzazione interna di PostgreSQL è un argomento complesso; per affrontarla serve una
conoscenza profonda del codice sorgente e del funzionamento interno di postgresql. È molto
raccomandabile che i seguenti suggerimenti specialistici siano provati soltanto da professionisti:
- Potete disabilitare fsync(), inizializzando
il postmaster con l'opzione -o -F. Ciò impedirà ad fsync()
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
APC UPS
(Uninterrupted Power Supply=fornitore di potenza senza interruzioni); e potete usare i sistemi di dischi RAID
(
Antares-Sparc-Raid
Software-Raid
Old-Software-Raid
Root-Raid
Boot-Root-Raid)
come protezione dai guasti dovuti al mezzo di memorizzazione.
- Usate l'opzione -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é potreste aver superato
i vostri limiti, sullo spazio di memoria condivisa, imposti dal kernel. Ogni buffer è di 8K, ed il valore predefinito è di 64 buffer.
- Usate l'opzione -S del back-end per incrementare l'ammontare
massimo di memoria, usata da ogni processo di backend, per gli ordinamenti temporanei.
Il valore -S è misurato in kilobyte, ed è predefinito a 512 (cioè 512K).
Non è saggio rendere troppo grande questo valore, perché potreste terminare la memoria quando
l'interrogazione richiede diversi ordinamenti concorrenti.
Avanti
Indietro
Indice