Documentazione di PostgreSQL 9.0 > Amministrazione del server > Configurazione del server
PrecedenteConnessioni TCP/IP sicure con tunnel SSHPosizioni dei fileSuccessivo

18. Configurazione del server

Ci sono molti parametri di configurazione che hanno effetto sul comportamento del sistema di databasei. Nella prima sezione di questo capitolo, viene descritto come impostare i parametri di configurazione. Le sezioni successive discutono ogni parametro in dettaglio.

18.1. Parametri di impostazione

Tutti i nomi dei parametri sono insensibili al case. Ogni parametro prende un valore di uno dei cinque tipi: Boolean, integer, floating point, string o enum. I valori Boolean possono essere scritti come on, off, true, false, yes, no, 1, 0 (tutti non sensibili alle maiuscole) o qualsiasi prefisso non ambiguo di questi.

Alcune impostazioni specificano un valore di memoria o tempo. Ognuna di queste ha un'unità implicita, che è uno tra kilobyte, block (tipicamente otto kilobyte), millisecondi, secondi o minuti. Le unità predefinite possono essere trovate facendo riferimento a pg_settings.unit. Per convenienza, un'unità diversa può anche essere specificata esplicitamente. Le unità di memoria valide sono kB (kilobyte), MB (megabyte) e GB (gigabyte); unità di tempo valide sono ms (milliseconds), s (secondi), min (minuti), h (ore) e d (giorni). Si noti che il moltiplicatore per le unità di memoria è 1024, non 1000.

I parametri di tipo «enum» sono specificati nello stesso modo dei parametri string, ma sono limitati a un insieme di possibili valori. I valori permessi possono essere trovati con pg_settings.enumvals. I valori dei parametri enumo sono insensibili alle maiuscole.

Un modo di impostare questi parametri è di modificare il file postgresql.conf, che normalmente è tenuto nella directory dei dati. (Una copia predefinita è installata quando viene inizializzata la directory dei dati del cluster). Un esempio di come potrebbe presentarsi il file è:

# This is a comment
log_connections = yes
log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB

Viene specificato un parametro per linea. Il segno uguale tra il nome e il valore è opzionale. Gli spazi bianchi sono insignificanti e le linee bianche sono ignorate. I segni cancelletto (#) indicano che il resto della linea è un commento. I valori dei parametri che non sono semplici identificatori o numeri devono essere tra singoli apici. Per includere un singolo apice nel valore di un parametro, scriverlo o tra doppi due apici (preferito) o usando la barra inversa.

In aggiunta alle impostazioni di un parametro, il file postgresql.conf può contenere direttive include, che specificano un altro file da leggere e processare come se fosse inserito nel file di configurazione in quel punto. Le direttive include appaiono semplicemente così:

include 'filename'

Se il nome del file non è un percorso assoluto, viene preso come relativo alla directory contenente il file di configurazione di riferimento. Le inclusioni possono essere annidate.

Il file di configurazione viene riletto ogni volta che il processo server principale riceve un segnale SIGHUP (che è facilmente mandato con pg_ctl reload). Il processo server principale inoltre propaga questo segnale a tutti i processi server attualmente in esecuzione di modo che anche i le sessioni esistenti otterranno i nuovi valori. Alternativamente, si può mandare direttamente il segnale a un singolo processo server. Alcuni parametri possono essere impostati solo all'avvio del server; qualsiasi cambiamento alle loro voci nel file di configurazione verrà ignorato fino al riavvio del server.

Un secondo modo di impostare i parametri di configurazione è di fornirli come opzione a linea di comando al comando postgres, tipo:

postgres -c log_connections=yes -c log_destination='syslog'

Le opzioni a linea di comando sovrascrivono qualsiasi impostazione del postgresql.conf. Notare che questo significa che non si potrà cambiare il valore al volo modificando postgresql.conf, quindi mentre il metodo della line di comando potrebbe essere conveniente, può costare in flessibilità successivamente.

Occasionalmente è utile dare un opzione a linea di comando solo a una particolare sessione. La variabile d'ambiente PGOPTIONS può essere usata per questo scopo lato client:

env PGOPTIONS='-c geqo=off' psql

(Questo funziona per qualsiasi applicazione client basata su libpq, non solo psql). Si noti che questo non funzionerà per parametri che sono fissati quando il server è avviato o che devono essere specificati in postgresql.conf.

Inoltre, è possibile assegnare un insieme di impostazioni di parametri ad un utente o un database. Ogni volta che una sessione è avviata, vengono caricate le impostazioni predefinite per l'utente e il database coinvolti. I comandi ALTER USER(7) e ALTER DATABASE(7), vengono usati rispettivamente per configurare queste impostazioni. Le impostazioni per database sovrascrivono qualsiasi cosa ricevuta dalla linea di comando di postgres o dal file di configurazione, e a turno sono sovrascritte da impostazioni per utente; entrambre sono sovrascritte da impostazioni per sessione.

Alcuni parametri possono essere cambiati in sessioni SQL individuali con il comando SET(7), per esempio:

SET ENABLE_SEQSCAN TO OFF;

Se SET è permesso, sovrascrive tutte le altre sorgenti di valori per il parametro. Alcuni parametri non possono essere cambiati con SET: per esempio, se controllano un comportamento che non può essere cambiato senza riavviare l'intero server PostgreSQL™. Inoltre, alcune modifiche di parametro con SET o ALTER richiedono permessi di superutente.

Il comando SHOW(7) permette di ispezionare i valori correnti di tutti i parametri.

La tabella virtuale pg_settings (descritta in Sezione 45.55, «pg_settings») permette anche di visualizzare e aggiornare parametri di sessione in fase di esecuzione. È equivalente a SHOW e SET, ma può essere maggiormente conveniente da usare dato che può essere sottoposto a join con altre tabella, o selezionate da usare qualsiasi condizione di selezione desiderata. Contiene anche maggiori informazioni su qualsi valori sono permessi per i parametri.

Documentazione di PostgreSQL 9.0 > Amministrazione del server > Configurazione del server
PrecedenteConnessioni TCP/IP sicure con tunnel SSHPosizioni dei fileSuccessivo