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

9.20. Fonctions d'administration système

Le Tableau 9.44, « Fonctions de paramétrage de configuration » affiche les fonctions disponibles pour connaître ou modifier les paramètres de configuration en exécution.

Tableau 9.44. Fonctions de paramétrage de configuration

Nom Type de retour Description
current_setting (nom_paramètre) text valeur actuelle du paramètre
set_config (nom_paramètre, , nouvelle_valeur, , est_locale) text configure le paramètre et renvoie la nouvelle valeur

La fonction current_setting renvoie la valeur courante du paramètre nom_paramètre. Elle correspond à la commande SQL SHOW. Un exemple :

SELECT current_setting('datestyle');

 current_setting
-----------------
ISO, MDY
(1 row)

set_config configure le paramètre nom_paramètre avec nouvelle_valeur. Si est_locale vaut true, la nouvelle valeur s'appliquera seulement à la transaction en cours. Si vous voulez que la nouvelle valeur s'applique à la session en cours, utilisez false à la place. La fonction correspond à la commande SQL SET. Un exemple :

SELECT set_config('log_statement_stats', 'off', false);

 set_config
------------
off
(1 row)

Les fonctions montrées dans le Tableau 9.45, « Fonctions d'envoi de signal aux serveurs » envoient des signaux de contrôle aux autres processus serveur. L'utilisation de ces fonctions est restreinte aux superutilisateurs.

Tableau 9.45. Fonctions d'envoi de signal aux serveurs

Nom Type de retour Description
pg_cancel_backend (pid int) boolean Annule la requête en cours du serveur
pg_reload_conf() boolean Cause le chargement des fichiers de configuration par les processus serveur
pg_rotate_logfile() boolean Demande une rotation du journal des traces du serveur

Chacune de ces fonctions renvoient true en cas de succès, false en cas d'échec.

pg_cancel_backend envoie un signal demandant l'annulation de la requête (SIGINT) à un processus serveur identifié par l'ID du processus. L'identifiant du processus d'un serveur actif peut se trouver à partir de la colonne procpid dans la vue pg_stat_activity ou en listant les processus postgres sur le serveur avec ps.

pg_reload_conf envoie un signal SIGHUP au postmaster impliquant un nouveau chargement des fichiers de configuration pour tous les processus serveur.

pg_rotate_logfile signale au gestionnaire de journaux de trace de basculer immédiatement vers un nouveau fichier de sortie. Ceci fonctionne seulement quand redirect_stderr est utilisé pour les traces, sinon il n'y a pas de sous-processus de gestion des traces.

Les fonctions montrées dans le Tableau 9.46, « Fonctions de contrôle de la sauvegarde » aident à l'exécution de sauvegardes à chaud. L'utilisation de ces fonctions est restreinte aux superutilisateurs.

Tableau 9.46. Fonctions de contrôle de la sauvegarde

Nom Type de retour Description
pg_start_backup (label text) text Début de la sauvegarde à chaud
pg_stop_backup() text Fin de la sauvegarde à chaud

pg_start_backup accepte un seul paramètre qui est un label défini arbitrairement par l'utilisateur pour la sauvegarde (typiquement, cela sera le nom sous lequel le fichier de sauvegarde sera stocké). La fonction écrit un fichier label dans le répertoire de données du groupe, puis renvoie le décalage du WAL de début de sauvegarde au format texte (l'utilisateur n'a pas besoin de faire attention à la valeur du résultat mais il est fourni au cas où il pourrait être utile).

pg_stop_backup supprime le fichier label créé par pg_start_backup et crée, à la place, un fichier historique dans l'emplacement des archives WAL. Ce fichier inclut le label donné à pg_start_backup, les décalages de début et de fin des WAL pour la sauvegarde ainsi que les heures de début et de fin de la sauvegarde. La valeur en retour est le décalage du WAL de fin (qui a de nouveau peu d'intérêt).

Pour des détails sur le bon usage de ces fonctions, voir la Section 23.3, « Sauvegardes à chaud et récupération à un instant (PITR) ».

Les fonctions montrées dans le Tableau 9.47, « Fonctions de calcul de taille des objets de la base de données » calculent l'utilisation de l'espace disque par les objets de la base de données.

Tableau 9.47. Fonctions de calcul de taille des objets de la base de données

Nom Code de retour Description
pg_column_size(any) int Nombre d'octets utilisé pour stocker une valeur particulière (pouvant être compressée)
pg_tablespace_size(oid) bigint Espace disque utilisé par le tablespace dont l'OID est spécifié
pg_tablespace_size(name) bigint Espace disque utilisé par le tablespace dont le nom est spécifié
pg_database_size(oid) bigint Espace disque utilisé par la base de données dont l'OID est spécifié
pg_database_size(name) bigint Espace disque utilisé par la base de données dont le nom est spécifié
pg_relation_size(oid) bigint Espace disque utilisé par la table ou l'index dont l'OID est spécifié
pg_relation_size(text) bigint Espace disque utilisé par la table ou l'index dont le nom est spécifié. Ce dernier peut être qualifié avec un nom de schéma
pg_total_relation_size(oid) bigint Espace disque occupé par la table dont l'OID est spécifié, en incluant les index et les données stockées par les tables TOAST
pg_total_relation_size(text) bigint Espace disque total utilisé par la table dont le nom est spécifié, en incluant les index et les données stockées dans les tables TOAST. Le nom de la table peut être qualifié avec un nom de schéma
pg_size_pretty(bigint) text Convertit une taille en octets dans un format lisible par un humain, avec des unités de taille

pg_column_size affiche l'espace utilisé pour stocker toute valeur individuelle.

pg_tablespace_size et pg_database_size acceptent l'OID ou le nom d'un tablespace ou d'une base de données, et renvoient l'espace disque total utilisé.

pg_relation_size accepte l'OID ou le nom d'une table, d'un index ou d'une table toast, et renvoie la taille en octet.

pg_total_relation_size accepte l'OID ou le nom d'une table ou d'une table toast, et renvoie la taille en octets des données et de tous les index et tables toast associées.

pg_size_pretty peut être utilisé pour formater le résultat d'une des autres fonctions d'une façon lisible par un être humain, c'est-à-dire en utilisant kB, MB, GB ou TB lorsque cela est approprié.

Les fonctions montrées dans le Tableau 9.48, « Fonctions d'accès générique aux fichiers » fournissent un accès natif aux du serveur. Seuls les fichiers contenus dans le répertoire du groupe de la base de donénes et ceux du répertoire log_directory sont accessibles. Utilisez un chemin relatif pour les fichiers du répertoire du groupe et un chemin correspondant à la configuration du paramètre log_directory pour les journaux de trace. L'utilisation de ces fonctions sont restreintes aux superutilisateurs.

Tableau 9.48. Fonctions d'accès générique aux fichiers

Nom Code de retour Description
pg_ls_dir(nom_répertoire text) setof text Liste le contenu d'un répertoire
pg_read_file(nom_fichier text, décalage bigint, longueur bigint) text renvoie le contenu d'un fichier texte
pg_stat_file(nom_fichier text) record renvoie des informations sur un fichier

pg_ls_dir renvoie tous les noms du répertoire spécifié sauf les entrées spéciales « . » et « .. ».

pg_read_file renvoie une partie d'un fichier texte, débutant au décalage indiqué, renvoyant au plus longueur octets (moins si la fin du fichier est atteinte avant). Si le décalage est négatif, il est relatif à la fin du fichier.

pg_stat_file renvoie un enregistrement contenant la taille du fichier, la date et heure du dernier accès, la date et heure de la dernière modification, la date et heure du dernier changement de statut (plateformes Unix seulement), la date et heure de création (Windows seulement) et un booléen indiquant s'il s'agit d'un répertoire. Les usages typiques incluent :

SELECT * FROM pg_stat_file('nomfichier');
SELECT (pg_stat_file('nomfichier')).modification;