PostgreSQLLa base de données la plus sophistiquée au monde.

17. Configuration du serveur

Il existe un grand nombre de paramètres de configuration affectant le comportement du système de bases de données. Dans la première section de ce chapitre, nous décrivons comment configurer ces paramètres ; les sections suivantes discutent de chaque paramètre en détail.

17.1. Paramètres de configuration

Tous les noms de paramètres ne sont pas sensibles à la casse. Chaque paramètre prend une valeur d'un de ces quatre types : booléen, entier, nombre à virgule flottante ou chaîne de caractères. Les valeurs booléennes peuvent être saisies comme ON, OFF, TRUE, FALSE, YES, NO, 1, 0 (quelque soit la casse) ou tout préfixe non ambigu de ceux-ci.

Une façon d'initialiser ces paramètres est d'éditer le fichier postgresql.conf qui est normalement placé dans le répertoire data (initdb y installe une copie par défaut). Voici un exemple de ce que ce fichier peut contenir :

# Ceci est un commentaire
log_connections = yes
log_destination = 'syslog'
search_path = '$user, public'

Un seul paramètre est spécifié par ligne. Le signe égal entre le nom et la valeur est optionnel. Les espaces blancs n'ont pas de signification et les lignes blanches sont ignorées. Les marques de hachage (#) introduisent des commentaires. Les valeurs des paramètres qui ne sont pas des identifieurs simples ou des nombres doivent être entre des guillemets simples. Pour intégrer un guillemet simple dans la valeur d'un paramètre, écrivez soit deux guillemets (méthode préférée) soit un antislash suivi du guillemet.

Le fichier de configuration est relu à chaque fois que le processus postmaster reçoit un signal SIGHUP (qui est envoyé par un simple appel à pg_ctl reload). Le postmaster propage aussi ce signal aux processus serveur en cours d'exécution de façon à ce que les sessions existantes obtiennent aussi la nouvelle valeur. Autrement, vous pouvez envoyer le signal directement à un seul processus serveur. Quelques paramètres peuvent seulement être initialisés au lancement du serveur ; tout changement dans leur entrée du fichier de configuration sera ignoré jusqu'au prochain lancement du serveur.

Une autre façon de configurer ces paramètres est de les donner en option sur la ligne de commande de postmaster ainsi :

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

Les options de la ligne de commande surchargent tout paramétrage en conflit avec ceux du fichier postgresql.conf. Notez que cela signifie que vous ne pourrez pas modifier la valeur en direct en éditant simplement le fichier postgresql.conf, donc bien que la méthode de la ligne de commande soit agréable, cela peut vous coûter cher plus tard en flexibilité.

Occasionnellement, il est utile de donner une option en ligne de commande à une session particulière seulement. La variable d'environnement PGOPTIONS peut être utilisée dans ce but du côté client :

env PGOPTIONS='-c geqo=off' psql

(Ceci fonctionne pour toute application client basée sur libpq, et non pas seulement pour psql.) Notez que ceci ne fonctionnera pas pour les paramètres fixes lorsque le serveur est lancé ou qui doivent être spécifiés dans postgresql.conf.

De plus, il est possible d'affecter un ensemble de paramètres à un utilisateur d'une base de données. Quand une session est lancée, les paramétrages par défaut de l'utilisateur et de la base de données impliqués sont chargés. Les commandes ALTER USER et ALTER DATABASE, respectivement, sont utilisées pour configurer ces paramétrages. Les paramètres par base de données surcharge tous ceux reçus de la ligne de commande de postmaster ou du fichier de configuration, et sont aussi surchargés par ceux de l'utilisateur ; les deux sont surchargés par les options par session.

Quelques paramètres peuvent être changés dans des sessions SQL individuelles avec la commande SET, par exemple :

SET ENABLE_SEQSCAN TO OFF;

Si SET est autorisé, il surcharge toutes les autres sources de valeurs pour le paramètre. Quelques paramètres ne peuvent pas être changés via SET : par exemple, s'ils contrôlent un comportement qui ne peut pas être changé raisonnablement sans relancer PostgreSQL™. De plus, quelques paramètres peuvent être modifiés via SET ou ALTER par les superutilisateurs, mais pas par des utilisateurs ordinaires.

La commande SHOW permet une inspection des valeurs actuelles de tous les paramètres.

La table virtuelle pg_settings (décrite dans la Section 42.41, « pg_settings ») autorise aussi l'affichage et la mise à jour de paramètres de session à l'exécution. Elle est équivalente à SHOW et SET mais peut être plus agréable à utiliser parce qu'elle peut être jointe avec d'autres tables ou sélectionnée avec l'utilisation des conditions de sélection désirées.