PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 18 beta 1 » Administration du serveur » Superviser l'activité de la base de données » Le système de statistiques cumulatives

27.2. Le système de statistiques cumulatives #

Le système de statistiques cumulatives de PostgreSQL récupère et fournit des informations sur l'activité du serveur. Actuellement, l'accès aux tables et index est comptabilisé en terme d'accès aux lignes et aux blocs. Le nombre total de lignes de chaque table et les informations sur les opérations de nettoyage et de calcul de statistiques sont aussi récupérées pour chaque table. Si activé, les appels aux fonctions des utilisateurs et le temps total passé dans chacune sont aussi comptabilisés.

PostgreSQL est également capable de renvoyer des informations dynamiques en temps réel sur ce qu'il se passe exactement dans le système, comme la commande exacte en cours d'exécution par d'autres processus serveur et les autres connexions qui existent dans le système. Cette fonctionnalité est indépendante du système de statistiques cumulatives.

27.2.1. Configuration de la récupération de statistiques #

Comme la récupération de statistiques ajoute un temps supplémentaire à l'exécution de la requête, le système peut être configuré pour récupérer ou non des informations. Ceci est contrôlé par les paramètres de configuration qui sont normalement initialisés dans postgresql.conf (voir Chapitre 19 pour plus de détails sur leur initialisation).

Le paramètre track_activities active la collecte d'informations sur la commande en cours d'exécution pour n'importe quel processus serveur.

The parameter track_cost_delay_timing enables monitoring of cost-based vacuum delay.

Le paramètre track_counts contrôle si les statistiques cumulatives sont récupérées pour les accès aux tables et index.

Le paramètre track_functions active le calcul de statistiques sur l'utilisation des fonctions définies par l'utilisateur.

Le paramètre track_io_timing active la collecte des temps de lecture, d'écriture, d'extension et de synchronisation des blocs.

Le paramètre track_wal_io_timing active la collecte des temps d'écriture et de synchronisation des journaux de transactions.

Normalement, ces paramètres sont configurés dans postgresql.conf de façon à ce qu'ils s'appliquent à tous les processus serveur, mais il est possible de les activer/désactiver sur des sessions individuelles en utilisant la commande SET (pour empêcher les utilisateurs ordinaires de cacher leur activité à l'administrateur, seuls les superutilisateurs sont autorisés à modifier ces paramètres avec SET).

Les statistiques cumulatives sont placées en mémoire partagée. Chaque processus PostgreSQL récupère les statistiques localement, puis met à jour les données partagées à des intervalles adéquats. Quand un serveur, y compris un secondaire physique, s'arrête proprement, une copie permanente des données statistiques est enregistrée dans le sous-répertoire pg_stat, pour que les statistiques survivent aux redémarrages du serveur. Par contre, en cas de démarrage après un arrêt sale (autrement dit, après un arrêt immédiat, un crash du serveur, un démarrage suite à la restauration d'une sauvegarde de base), tous les compteurs statistiques sont réinitialisés.

Une transaction peut aussi voir des statistiques propres à son activité (qui ne sont pas encore transmises au collecteur) dans les vues pg_stat_xact_all_tables, pg_stat_xact_sys_tables, pg_stat_xact_user_tables et pg_stat_xact_user_functions. Ces informations se mettent à jour en continu pendant l'exécution de la transaction.

27.2.2. Visualiser les statistiques #

Plusieurs vues prédéfinies, listées à Tableau 27.1, sont disponibles pour montrer l'état courant du système. Il existe aussi plusieurs autres vues, listées à Tableau 27.2, qui montrent les statistiques accumulées. De manière alternative, il est possible de créer des vues personnalisées qui utilisent les fonctions statistiques sous-jacentes, comme discuté à Section 27.2.26.

Lors de l'utilisation des vues et fonctions des statistiques cumulatives pour superviser les données collectées, il est important de savoir que l'information n'est pas mise à jour instantanément. Chaque processus serveur individuel vide les statistiques accumulées en mémoire partagée avant d'être de nouveau en attente, mais cela n'arrive pas plus fréquemment qu'une fois toutes les PGSTAT_MIN_INTERVAL millisecondes (1 seconde sauf si cette constante est modifiée avant la compilation du serveur) ; donc une requête ou une transaction toujours en cours n'affecte pas les totaux affichés et l'information est de ce fait en retard par rapport à l'activité en cours. Néanmoins, l'information de la requête en cours récupérée par track_activities est toujours à jour.

Un autre point important est que, lorsqu'un processus serveur se voit demander d'afficher une des statistiques accumulées, les valeurs accédées sont mises en cache jusqu'à la fin de la transaction courante dans la configuration par défaut. Donc les statistiques afficheront une information statique tout au long de la vue de la transaction. De façon similaire, l'information sur les requêtes en cours de toutes les sessions est récupérée quand cette information est demandée pour la première fois à l'intérieur d'une transaction, et la même information sera affichée tout au long de la transaction. Ceci est une fonctionnalité, et non pas un bug, car cela vous permet de réaliser plusieurs requêtes sur les statistiques et de corréler les résultats sans vous soucier que les nombres changent entre temps. Lors de l'analyse interactive des statistiques ou avec des requêtes coûteuses, le delta du temps entre les accès aux statistiques individuelles peut amener à des valeurs fausses significativement dans les statistiques en cache. Pour minimiser cela, stats_fetch_consistency peut être configuré à snapshot, au prix d'une utilisation mémoire accrue pour meetre en cache des données statistiques inutiles. Par contre, s'il est connu que les statistiques ne sont accédées qu'une seule fois, mettre en cache les statistiques accédées n'est pas nécessaire et peut être évité en configurant stats_fetch_consistency à none. Vous pouvez exécuter pg_stat_clear_snapshot() pour annuler l'image des statistiques de la transaction en cours ou les valeurs en cache, si applicable. La prochaine utilisation des informations statistiques causera (en mode snapshot) la construction d'un nouveau snapshot ou (en mode cache) la mise en cache des statistiques accédées.

Une transaction peut aussi voir ses propres statistiques (pas encore vidées dans les statistiques en mémoire partagée) dans les vues pg_stat_xact_all_tables, pg_stat_xact_sys_tables, pg_stat_xact_user_tables et pg_stat_xact_user_functions. Ces nombres n'agissent pas comme indiqués ci-dessus ; ils sont au contraire mis à jour en continue tout au long de la transaction.

Certaines des informations des vues statistiques dynamiques montrées dans Tableau 27.1 sont à accès restreint. Les utilisateurs ordinaires peuvent seulement voir toutes les informations sur leur propres sessions (les sessions appartenant à un rôle dont ils sont membres). Les lignes des autres sessions auront de nombreuses colonnes à NULL. Notez néanmoins que l'existence d'une session et ses propriétés générales, tel que l'utilisateur et la base de données, sont visibles à tous les utilisateurs. Les superutilisateurs et les rôles disposant des droits du rôle interne pg_read_all_stats peuvent accéder à toutes les informations sur les sessions.

Tableau 27.1. Vues statistiques dynamiques

Nom de la vueDescription
pg_stat_activity Une ligne par processus serveur, montrant les informations liées à l'activité courante du processus, comme l'état et la requête en cours. Voir pg_stat_activity pour plus de détails.
pg_stat_replication Une ligne par processus d'envoi de WAL, montrant les statistiques sur la réplication vers le serveur standby connecté au processus. Voir pg_stat_replication pour les détails.
pg_stat_wal_receiverSeulement une ligne, affichant des statistiques sur le récepteur WAL à partir du serveur ayant ce récepteur. Voir pg_stat_wal_receiver pour les détails.
pg_stat_recovery_prefetchSeulement une ligne, affichant des statistiques sur la lecture en avance de blocs lors du rejeu des transactions. Voir pg_stat_recovery_prefetch pour les détails.
pg_stat_subscriptionAu moins une ligne par souscription, affichant des informations sur les processus workers de souscription. Voir pg_stat_subscription pour plus de détails.
pg_stat_sslUne ligne par connexion (régulière et de réplication), montrant des informations sur le chiffrement SSL utilisé pour ces connexions. Voir pg_stat_ssl pour les détails.
pg_stat_gssapiUne ligne par connexion (standard et réplication), montrant des informations sur l'authentification et le chiffrement GSSAPI utilisés sur cette connexion. Voir pg_stat_gssapi pour les détails.
pg_stat_progress_analyzeUne ligne pour chaque connexion (incluant celles des processus autovacuum worker) exécutant un ANALYZE, pour indiquer le progrès actuel. Voir Section 27.4.1.
pg_stat_progress_create_indexUne ligne pour chaque processus serveur exécutant un CREATE INDEX ou un REINDEX, affichant la progression actuelle. Voir Section 27.4.4.
pg_stat_progress_vacuumUne ligne pour chaque processus (incluant les processus autovacuum worker) exécutant un VACUUM, affichant le progrès en cours. Voir Section 27.4.5.
pg_stat_progress_clusterUne ligne pour chaque processus serveur exécutant CLUSTER ou VACUUM FULL, affichant le progrès en cours. Voir Section 27.4.2.
pg_stat_progress_basebackupUne ligne pour chaque processus walsender envoyant une sauvegarde de base, en affichant le progrès actuel. Voir Section 27.4.6.
pg_stat_progress_copyUne ligne pour chaque processus en cours d'exécution de COPY, affichant le progrès actuel. Voir Section 27.4.3.

Tableau 27.2. Vues sur les statistiques récupérées

Nom de la vueDescription
pg_stat_archiverUne seule ligne, montrant les statistiques sur l'activité du processus d'archivage des journaux de transactions. Voir pg_stat_archiver pour les détails.
pg_stat_bgwriterUne seule ligne, montrant les statistiques d'activité du processus d'écriture d'arrière-plan. Voir pg_stat_bgwriter pour plus de détails.
pg_stat_checkpointerUne seule ligne, affichant les statistiques sur l'activité du processus checkpointer. Voir pg_stat_checkpointer pour les détails.
pg_stat_databaseUne ligne par base de données, montrant les statistiques globales des bases. Voir pg_stat_database pour plus de détails.
pg_stat_database_conflicts Une ligne par base de données, montrant les statistiques au niveau de la base concernant les requêtes annulées à cause de conflits avec les serveurs standby en restauration. Voir pg_stat_database_conflicts pour plus de détails.
pg_stat_io Une ligne pour chaque combinaison de type de processus, contexte et objet cible contenant des statistiques disques sur l'instance. Voir pg_stat_io pour plus de détails.
pg_stat_replication_slotsUne ligne par slot de réplication, affichant des statistiques sur l'utilisation des slots de réplication. Voir pg_stat_replication_slots pour plus de détails.
pg_stat_slruUne ligne par SLRU, affichant les statistiques des opérations. Voir pg_stat_slru pour plus de détails.
pg_stat_subscription_statsUne ligne par souscription, affichant des statistiques sur les erreurs et les conflits. Voir pg_stat_subscription_stats pour les détails.
pg_stat_walUne seule ligne, montrant les statistiques d'activité WAL. Voir pg_stat_wal pour plus de détails.
pg_stat_all_tables Une ligne par table de la base de données courante, montrant les statistiques d'accès de chaque table spécifiquement. Voir pg_stat_all_tables pour plus de détails.
pg_stat_sys_tablesIdentique à pg_stat_all_tables, sauf que seules les tables systèmes sont affichées
pg_stat_user_tablesIdentique à pg_stat_all_tables, sauf que seules les tables utilisateurs sont affichées
pg_stat_xact_all_tablesSimilaire à pg_stat_all_tables, mais décompte les actions prises dans la transaction en cours (qui ne sont pas encore pris en compte dans la vue pg_stat_all_tables et les vues du même type). Les colonnes correspondant au nombre de lignes vivantes et mortes, ainsi que celles pour les actions du VACUUM et de l'ANALYZE ne sont pas présentes dans cette vue
pg_stat_xact_sys_tablesIdentique à pg_stat_xact_all_tables, sauf que seules les tables systèmes sont affichées
pg_stat_xact_user_tablesIdentique à pg_stat_xact_all_tables, sauf que seules les tables utilisateurs sont affichées
pg_stat_all_indexes Une ligne par index de la base de données courante, montrant les statistiques d'accès de chaque index spécifiquement. Voir pg_stat_all_indexes pour plus de détails.
pg_stat_sys_indexesIdentique à pg_stat_all_indexes, sauf que seules les tables systèmes sont affichées
pg_stat_user_indexesIdentique à pg_stat_all_indexes, sauf que seules les tables utilisateurs sont affichées
pg_stat_user_functions Une ligne pour chaque fonction tracée, affichant des statistiques sur l'exécution de cette fonction. Voir pg_stat_user_functions pour des détails.
pg_stat_xact_user_functionsSimilaire à pg_stat_user_functions, mais compte seulement les appels lors de la transaction en cours (qui ne sont pas encore inclus dans pg_stat_user_functions).
pg_statio_all_tables Une ligne par table de la base de données courante, montrant les statistiques d'entrées/sorties de chaque table spécifiquement. Voir pg_statio_all_tables pour plus de détails.
pg_statio_sys_tablesIdentique à pg_statio_all_tables, sauf que seules les tables systèmes sont affichées
pg_statio_user_tablesIdentique à pg_statio_all_tables, sauf que seules les tables utilisateur sont affichées
pg_statio_all_indexes Une ligne par index de la base de données courante, montrant les les statistiques d'entrées/sorties de chaque index spécifiquement. Voir pg_statio_all_indexes pour plus de détails.
pg_statio_sys_indexesIdentique à pg_statio_all_indexes, sauf que seuls les index systèmes sont affichés
pg_statio_user_indexesIdentique à pg_statio_all_indexes, sauf que seuls les index utilisateur sont affichés
pg_statio_all_sequences Une ligne par séquence de la base de données courante, montrant les statistiques d'entrées/sorties de chaque séquence spécifiquement. Voir pg_statio_all_sequences pour plus de détails.
pg_statio_sys_sequencesIdentique à pg_statio_all_sequences, sauf que seules les séquences système sont affichées (actuellement, aucune séquence système n'est définie, donc cette vue est toujours vide)
pg_statio_user_sequencesIdentique à pg_statio_all_sequences, sauf que seules les séquences utilisateur sont affichées

Les statistiques par index sont particulièrement utiles pour déterminer les index utilisés et leur efficacité.

L'ensemble de vues pg_stat_io et pg_statio_ est utile pour déterminer l'efficacité du cache disque. Elles peuvent être utilisées pour calculer un ratio de lecture en cache. Notez que, bien que les statistiques d'entrées/sorties disques de PostgreSQL capturent la plupart des fois pour lequel le noyau a été appelé réaliser des entrées/sorties disques, elles ne différencient pas entre les données qui ont été récupérées du disque et celles qui résidaient déjà dans le cache disque du noyau. Il est conseillé aux utilisateurs de combiner les vues statistiques de PostgreSQL avec des outils systèmes pour avoir un vision plus complète des performances des entrées/sorties disque de la base de données.

27.2.3. pg_stat_activity #

La vue pg_stat_activity aura une ligne par processus serveur, montrant des informations liées à l'activité courante de ce processus.

Tableau 27.3. Vue pg_stat_activity

Type

Description

datid oid

OID de la base de données auquel ce processus serveur est connecté

datname name

Nom de la base de données auquel ce processus serveur est connecté

pid integer

Identifiant du processus serveur

leader_pid integer

Identifiant du processus du leader pour une requête parallélisée si ce si ce processus est un worker, identifiant du processus d'un leader pour la réplication logique parallélisée si ce processus est un worker d'application parallélisée de la réplication logique. NULL indique que ce processus est le leader pour une requête parallélisée ou pour une application parallélisée sur la réplication logique, ou ne participe pas à une requête parallélisée.

usesysid oid

OID de l'utilisateur connecté à ce processus serveur

usename name

Nom de l'utilisateur connecté à ce processus serveur

application_name text

Nom de l'application connectée à ce processus serveur

client_addr inet

Adresse IP du client pour ce processus serveur. Si ce champ est vide, cela indique soit que le client est connecté via un socket Unix sur la machine serveur soit qu'il s'agit d'un processus interne tel qu'autovacuum.

client_hostname text

Nom d'hôte du client connecté, comme reporté par une recherche DNS inverse sur client_addr. Ce champ ne sera rempli que pour les connexions IP, et seulement quand log_hostname est activé.

client_port integer

Numéro de port TCP que le client utilise pour communiquer avec le processus serveur, ou -1 si un socket Unix est utilisé.

backend_start timestamp with time zone

Heure de démarrage du processus. Pour les processus backends, c'est l'heure où le client s'est connecté au serveur.

xact_start timestamp with time zone

Heure de démarrage de la transaction courante du processus, ou NULL si aucune transaction n'est active. Si la requête courante est la première de sa transaction, cette colonne a la même valeur que la colonne query_start.

query_start timestamp with time zone

Heure à laquelle la requête active a été démarrée, ou si state ne vaut pas active, quand la dernière requête a été lancée.

state_change timestamp with time zone

Heure à laquelle l'état (state) a été modifié en dernier

wait_event_type text

Type de l'événement pour lequel le processus est en attente  sinon NULL. Voir Tableau 27.4.

wait_event text

Nom de l'événement d'attente si le processus est en attente, NULL dans le cas contraire. Voir Tableau 27.5 jusqu'à Tableau 27.13.

state text

État général du processus serveur. Les valeurs possibles sont :

  • starting: The backend is in initial startup. Client authentication is performed during this phase.

  • active : le processus serveur exécute une requête.

  • idle : le processus serveur est en attente d'une commande par le client.

  • idle in transaction : le processus serveur est en transaction, mais n'est pas en train d'exécuter une requête.

  • idle in transaction (aborted) : l'état est similaire à idle in transaction, à la différence qu'une des instructions de la transaction a généré une erreur.

  • fastpath function call : le processus serveur exécute une fonction fast-path.

  • disabled : cet état est affiché si track_activities est désactivé pour ce processus serveur.

backend_xid xid

Identifiant de transaction de haut niveau de ce processus, si disponible ; voir Section 67.1.

backend_xmin xid

L'horizon xmin de ce processus.

query_id bigint

L'identifiant de la requête la plus récente du processus. Si state vaut active, alors cette colonne indique l'identifiant de la requête en cours d'exécution. Pour les autres états, cette colonne indique l'identifiant de la dernière requête exécutée par le processus. Les identifiants de requêtes ne sont pas calculés par défaut, ainsi cette colonne peut être nulle sauf si le paramètre compute_query_id est activé ou si un module tiers calculant les identifiants de requêtes est configuré.

query text

Texte de la requête la plus récente pour ce processus serveur. Si state vaut active, alors ce champ affiche la requête en cours d'exécution. Dans tous les autres cas, il affichera la dernière requête à avoir été exécutée. Par défaut, le texte de la requête est tronqué à 1024 octets. Cette valeur peut être modifiée avec le paramètre track_activity_query_size.

backend_type text

Type du processus actuel. Les types possibles sont autovacuum launcher, autovacuum worker, logical replication launcher, logical replication worker, parallel worker, background writer, client backend, checkpointer, archiver, standalone backend, startup, walreceiver, walsender, walwriter et walsummarizer. De plus, les background workers enregistrés par les extensions pourraient avoir des types supplémentaires.


Note

Les colonnes wait_event et state sont indépendantes. Si un processus serveur est dans l'état active, il pourrait, ou non, être en attente (waiting) d'un événement. Si l'état est active et si wait_event est différent de NULL, cela signifie qu'une requête est en cours d'exécution, mais que cette exécution est bloquée quelque part dans le système. To keep the reporting overhead low, the system does not attempt to synchronize different aspects of activity data for a backend. As a result, ephemeral discrepancies may exist between the view's columns.

Tableau 27.4. Types de Wait Event

Type de Wait EventDescription
ActivityLe processus serveur est en attente. Ce type d'événement indique un processus en attente d'activité dans sa boucle principale de traitement. wait_event identifiera la point d'attente spécifique ; voir Tableau 27.5.
BufferPinLe processus serveur est en attente de l'accès exclusif à un buffer de données. Les attentes de ce type peuvent être prolongées si un autre processus détient un curseur ouvert qui est le dernier à avoir lu des données à partir du buffer en question. Voir Tableau 27.6.
ClientLe processus serveur est en attente d'activité sur un socket connecté à l'application de l'utilisateur. Donc le serveur attend quelque chose indépendant de ses traitements internes.. wait_event identifiera le point d'attente spécifique ; voir Tableau 27.7.
ExtensionLe processus serveur est en attente d'une condition définie par un module d'extension. Voir Tableau 27.8.
InjectionPointLe processus serveur est en attente qu'un point d'injection atteigne une décision définie dans un test. Voir Section 36.10.14 pour plus de détails. Ce type n'a pas de points d'attente prédéfinis.
IOLe processus serveur est en attente de la réalisation d'une opération d'entrée/sortie disque. wait_event identifiera le point d'attente spécifique ; voir Tableau 27.9.
IPCLe processus serveur est en attente d'interaction avec un autre processus serveur. wait_event identifiera le point d'attente spécifique ; voir Tableau 27.10.
LockLe processus serveur est en attente d'un verrou lourd. Les verrous lourds, gérés par le gestionnaire de verrous, protège principalement les objets SQL visibles tels que les tables. Néanmoins, ils sont aussi utilisés pour assurer des exclusions mutuelles pour certaines opérations internes, telles que les extensions de relation. wait_event identifiera le type de verrou attendu ; voir Tableau 27.11.
LWLockLe processus serveur est en attente d'un verrou léger. La plupart de ces verrous protègent une structure de données particulière en mémoire partagée. wait_event contiendra un nom identifiant le but du verrou léger. (Certains verrous ont des noms spécifiques ; les autres font partie d'un groupe de verrous, chacune avec un but similaire.) Voir Tableau 27.12.
TimeoutLe processus serveur est en attente de l'expiration d'un délai. wait_event identifiera le point d'attente spécifique ; voir Tableau 27.13.

Tableau 27.5. Wait Events of Type Activity

Activity Wait EventDescription
ArchiverMainWaiting in main loop of archiver process.
AutovacuumMainWaiting in main loop of autovacuum launcher process.
BgwriterHibernateWaiting in background writer process, hibernating.
BgwriterMainWaiting in main loop of background writer process.
CheckpointerMainWaiting in main loop of checkpointer process.
CheckpointerShutdownWaiting for checkpointer process to be terminated.
IoWorkerMainWaiting in main loop of IO Worker process.
LogicalApplyMainWaiting in main loop of logical replication apply process.
LogicalLauncherMainWaiting in main loop of logical replication launcher process.
LogicalParallelApplyMainWaiting in main loop of logical replication parallel apply process.
RecoveryWalStreamWaiting in main loop of startup process for WAL to arrive, during streaming recovery.
ReplicationSlotsyncMainWaiting in main loop of slot sync worker.
ReplicationSlotsyncShutdownWaiting for slot sync worker to shut down.
SysloggerMainWaiting in main loop of syslogger process.
WalReceiverMainWaiting in main loop of WAL receiver process.
WalSenderMainWaiting in main loop of WAL sender process.
WalSummarizerWalWaiting in WAL summarizer for more WAL to be generated.
WalWriterMainWaiting in main loop of WAL writer process.

Tableau 27.6. Wait Events of Type Bufferpin

BufferPin Wait EventDescription
BufferPinWaiting to acquire an exclusive pin on a buffer.

Tableau 27.7. Wait Events of Type Client

Client Wait EventDescription
ClientReadWaiting to read data from the client.
ClientWriteWaiting to write data to the client.
GssOpenServerWaiting to read data from the client while establishing a GSSAPI session.
LibpqwalreceiverConnectWaiting in WAL receiver to establish connection to remote server.
LibpqwalreceiverReceiveWaiting in WAL receiver to receive data from remote server.
SslOpenServerWaiting for SSL while attempting connection.
WaitForStandbyConfirmationWaiting for WAL to be received and flushed by the physical standby.
WalSenderWaitForWalWaiting for WAL to be flushed in WAL sender process.
WalSenderWriteDataWaiting for any activity when processing replies from WAL receiver in WAL sender process.

Tableau 27.8. Wait Events of Type Extension

Extension Wait EventDescription
ExtensionWaiting in an extension.

Tableau 27.9. Wait Events of Type Io

IO Wait EventDescription
AioIoCompletionWaiting for another process to complete IO.
AioIoUringExecutionWaiting for IO execution via io_uring.
AioIoUringSubmitWaiting for IO submission via io_uring.
BasebackupReadWaiting for base backup to read from a file.
BasebackupSyncWaiting for data written by a base backup to reach durable storage.
BasebackupWriteWaiting for base backup to write to a file.
BuffileReadWaiting for a read from a buffered file.
BuffileTruncateWaiting for a buffered file to be truncated.
BuffileWriteWaiting for a write to a buffered file.
ControlFileReadWaiting for a read from the pg_control file.
ControlFileSyncWaiting for the pg_control file to reach durable storage.
ControlFileSyncUpdateWaiting for an update to the pg_control file to reach durable storage.
ControlFileWriteWaiting for a write to the pg_control file.
ControlFileWriteUpdateWaiting for a write to update the pg_control file.
CopyFileCopyWaiting for a file copy operation.
CopyFileReadWaiting for a read during a file copy operation.
CopyFileWriteWaiting for a write during a file copy operation.
DataFileExtendWaiting for a relation data file to be extended.
DataFileFlushWaiting for a relation data file to reach durable storage.
DataFileImmediateSyncWaiting for an immediate synchronization of a relation data file to durable storage.
DataFilePrefetchWaiting for an asynchronous prefetch from a relation data file.
DataFileReadWaiting for a read from a relation data file.
DataFileSyncWaiting for changes to a relation data file to reach durable storage.
DataFileTruncateWaiting for a relation data file to be truncated.
DataFileWriteWaiting for a write to a relation data file.
DsmAllocateWaiting for a dynamic shared memory segment to be allocated.
DsmFillZeroWriteWaiting to fill a dynamic shared memory backing file with zeroes.
LockFileAddtodatadirReadWaiting for a read while adding a line to the data directory lock file.
LockFileAddtodatadirSyncWaiting for data to reach durable storage while adding a line to the data directory lock file.
LockFileAddtodatadirWriteWaiting for a write while adding a line to the data directory lock file.
LockFileCreateReadWaiting to read while creating the data directory lock file.
LockFileCreateSyncWaiting for data to reach durable storage while creating the data directory lock file.
LockFileCreateWriteWaiting for a write while creating the data directory lock file.
LockFileRecheckdatadirReadWaiting for a read during recheck of the data directory lock file.
LogicalRewriteCheckpointSyncWaiting for logical rewrite mappings to reach durable storage during a checkpoint.
LogicalRewriteMappingSyncWaiting for mapping data to reach durable storage during a logical rewrite.
LogicalRewriteMappingWriteWaiting for a write of mapping data during a logical rewrite.
LogicalRewriteSyncWaiting for logical rewrite mappings to reach durable storage.
LogicalRewriteTruncateWaiting for truncate of mapping data during a logical rewrite.
LogicalRewriteWriteWaiting for a write of logical rewrite mappings.
RelationMapReadWaiting for a read of the relation map file.
RelationMapReplaceWaiting for durable replacement of a relation map file.
RelationMapWriteWaiting for a write to the relation map file.
ReorderBufferReadWaiting for a read during reorder buffer management.
ReorderBufferWriteWaiting for a write during reorder buffer management.
ReorderLogicalMappingReadWaiting for a read of a logical mapping during reorder buffer management.
ReplicationSlotReadWaiting for a read from a replication slot control file.
ReplicationSlotRestoreSyncWaiting for a replication slot control file to reach durable storage while restoring it to memory.
ReplicationSlotSyncWaiting for a replication slot control file to reach durable storage.
ReplicationSlotWriteWaiting for a write to a replication slot control file.
SlruFlushSyncWaiting for SLRU data to reach durable storage during a checkpoint or database shutdown.
SlruReadWaiting for a read of an SLRU page.
SlruSyncWaiting for SLRU data to reach durable storage following a page write.
SlruWriteWaiting for a write of an SLRU page.
SnapbuildReadWaiting for a read of a serialized historical catalog snapshot.
SnapbuildSyncWaiting for a serialized historical catalog snapshot to reach durable storage.
SnapbuildWriteWaiting for a write of a serialized historical catalog snapshot.
TimelineHistoryFileSyncWaiting for a timeline history file received via streaming replication to reach durable storage.
TimelineHistoryFileWriteWaiting for a write of a timeline history file received via streaming replication.
TimelineHistoryReadWaiting for a read of a timeline history file.
TimelineHistorySyncWaiting for a newly created timeline history file to reach durable storage.
TimelineHistoryWriteWaiting for a write of a newly created timeline history file.
TwophaseFileReadWaiting for a read of a two phase state file.
TwophaseFileSyncWaiting for a two phase state file to reach durable storage.
TwophaseFileWriteWaiting for a write of a two phase state file.
VersionFileSyncWaiting for the version file to reach durable storage while creating a database.
VersionFileWriteWaiting for the version file to be written while creating a database.
WalsenderTimelineHistoryReadWaiting for a read from a timeline history file during a walsender timeline command.
WalBootstrapSyncWaiting for WAL to reach durable storage during bootstrapping.
WalBootstrapWriteWaiting for a write of a WAL page during bootstrapping.
WalCopyReadWaiting for a read when creating a new WAL segment by copying an existing one.
WalCopySyncWaiting for a new WAL segment created by copying an existing one to reach durable storage.
WalCopyWriteWaiting for a write when creating a new WAL segment by copying an existing one.
WalInitSyncWaiting for a newly initialized WAL file to reach durable storage.
WalInitWriteWaiting for a write while initializing a new WAL file.
WalReadWaiting for a read from a WAL file.
WalSummaryReadWaiting for a read from a WAL summary file.
WalSummaryWriteWaiting for a write to a WAL summary file.
WalSyncWaiting for a WAL file to reach durable storage.
WalSyncMethodAssignWaiting for data to reach durable storage while assigning a new WAL sync method.
WalWriteWaiting for a write to a WAL file.

Tableau 27.10. Wait Events of Type Ipc

IPC Wait EventDescription
AppendReadyWaiting for subplan nodes of an Append plan node to be ready.
ArchiveCleanupCommandWaiting for archive_cleanup_command to complete.
ArchiveCommandWaiting for archive_command to complete.
BackendTerminationWaiting for the termination of another backend.
BackupWaitWalArchiveWaiting for WAL files required for a backup to be successfully archived.
BgworkerShutdownWaiting for background worker to shut down.
BgworkerStartupWaiting for background worker to start up.
BtreePageWaiting for the page number needed to continue a parallel B-tree scan to become available.
BufferIoWaiting for buffer I/O to complete.
CheckpointDelayCompleteWaiting for a backend that blocks a checkpoint from completing.
CheckpointDelayStartWaiting for a backend that blocks a checkpoint from starting.
CheckpointDoneWaiting for a checkpoint to complete.
CheckpointStartWaiting for a checkpoint to start.
ExecuteGatherWaiting for activity from a child process while executing a Gather plan node.
HashBatchAllocateWaiting for an elected Parallel Hash participant to allocate a hash table.
HashBatchElectWaiting to elect a Parallel Hash participant to allocate a hash table.
HashBatchLoadWaiting for other Parallel Hash participants to finish loading a hash table.
HashBuildAllocateWaiting for an elected Parallel Hash participant to allocate the initial hash table.
HashBuildElectWaiting to elect a Parallel Hash participant to allocate the initial hash table.
HashBuildHashInnerWaiting for other Parallel Hash participants to finish hashing the inner relation.
HashBuildHashOuterWaiting for other Parallel Hash participants to finish partitioning the outer relation.
HashGrowBatchesDecideWaiting to elect a Parallel Hash participant to decide on future batch growth.
HashGrowBatchesElectWaiting to elect a Parallel Hash participant to allocate more batches.
HashGrowBatchesFinishWaiting for an elected Parallel Hash participant to decide on future batch growth.
HashGrowBatchesReallocateWaiting for an elected Parallel Hash participant to allocate more batches.
HashGrowBatchesRepartitionWaiting for other Parallel Hash participants to finish repartitioning.
HashGrowBucketsElectWaiting to elect a Parallel Hash participant to allocate more buckets.
HashGrowBucketsReallocateWaiting for an elected Parallel Hash participant to finish allocating more buckets.
HashGrowBucketsReinsertWaiting for other Parallel Hash participants to finish inserting tuples into new buckets.
LogicalApplySendDataWaiting for a logical replication leader apply process to send data to a parallel apply process.
LogicalParallelApplyStateChangeWaiting for a logical replication parallel apply process to change state.
LogicalSyncDataWaiting for a logical replication remote server to send data for initial table synchronization.
LogicalSyncStateChangeWaiting for a logical replication remote server to change state.
MemCxtPublishWaiting for a process to publish memory information.
MessageQueueInternalWaiting for another process to be attached to a shared message queue.
MessageQueuePutMessageWaiting to write a protocol message to a shared message queue.
MessageQueueReceiveWaiting to receive bytes from a shared message queue.
MessageQueueSendWaiting to send bytes to a shared message queue.
MultixactCreationWaiting for a multixact creation to complete.
ParallelBitmapScanWaiting for parallel bitmap scan to become initialized.
ParallelCreateIndexScanWaiting for parallel CREATE INDEX workers to finish heap scan.
ParallelFinishWaiting for parallel workers to finish computing.
ProcarrayGroupUpdateWaiting for the group leader to clear the transaction ID at transaction end.
ProcSignalBarrierWaiting for a barrier event to be processed by all backends.
PromoteWaiting for standby promotion.
RecoveryConflictSnapshotWaiting for recovery conflict resolution for a vacuum cleanup.
RecoveryConflictTablespaceWaiting for recovery conflict resolution for dropping a tablespace.
RecoveryEndCommandWaiting for recovery_end_command to complete.
RecoveryPauseWaiting for recovery to be resumed.
ReplicationOriginDropWaiting for a replication origin to become inactive so it can be dropped.
ReplicationSlotDropWaiting for a replication slot to become inactive so it can be dropped.
RestoreCommandWaiting for restore_command to complete.
SafeSnapshotWaiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction.
SyncRepWaiting for confirmation from a remote server during synchronous replication.
WalBufferInitWaiting on WAL buffer to be initialized.
WalReceiverExitWaiting for the WAL receiver to exit.
WalReceiverWaitStartWaiting for startup process to send initial data for streaming replication.
WalSummaryReadyWaiting for a new WAL summary to be generated.
XactGroupUpdateWaiting for the group leader to update transaction status at transaction end.

Tableau 27.11. Wait Events of Type Lock

Lock Wait EventDescription
advisoryWaiting to acquire an advisory user lock.
applytransactionWaiting to acquire a lock on a remote transaction being applied by a logical replication subscriber.
extendWaiting to extend a relation.
frozenidWaiting to update pg_database.datfrozenxid and pg_database.datminmxid.
objectWaiting to acquire a lock on a non-relation database object.
pageWaiting to acquire a lock on a page of a relation.
relationWaiting to acquire a lock on a relation.
spectokenWaiting to acquire a speculative insertion lock.
transactionidWaiting for a transaction to finish.
tupleWaiting to acquire a lock on a tuple.
userlockWaiting to acquire a user lock.
virtualxidWaiting to acquire a virtual transaction ID lock; see Section 67.1.

Tableau 27.12. Wait Events of Type Lwlock

LWLock Wait EventDescription
AddinShmemInitWaiting to manage an extension's space allocation in shared memory.
AioWorkerSubmissionQueueWaiting to access AIO worker submission queue.
AutoFileWaiting to update the postgresql.auto.conf file.
AutovacuumWaiting to read or update the current state of autovacuum workers.
AutovacuumScheduleWaiting to ensure that a table selected for autovacuum still needs vacuuming.
BackgroundWorkerWaiting to read or update background worker state.
BtreeVacuumWaiting to read or update vacuum-related information for a B-tree index.
BufferContentWaiting to access a data page in memory.
BufferMappingWaiting to associate a data block with a buffer in the buffer pool.
CheckpointerCommWaiting to manage fsync requests.
CommitTsWaiting to read or update the last value set for a transaction commit timestamp.
CommitTsBufferWaiting for I/O on a commit timestamp SLRU buffer.
CommitTsSLRUWaiting to access the commit timestamp SLRU cache.
ControlFileWaiting to read or update the pg_control file or create a new WAL file.
DSMRegistryWaiting to read or update the dynamic shared memory registry.
DSMRegistryDSAWaiting to access dynamic shared memory registry's dynamic shared memory allocator.
DSMRegistryHashWaiting to access dynamic shared memory registry's shared hash table.
DynamicSharedMemoryControlWaiting to read or update dynamic shared memory allocation information.
InjectionPointWaiting to read or update information related to injection points.
LockFastPathWaiting to read or update a process' fast-path lock information.
LockManagerWaiting to read or update information about « heavyweight » locks.
LogicalRepLauncherDSAWaiting to access logical replication launcher's dynamic shared memory allocator.
LogicalRepLauncherHashWaiting to access logical replication launcher's shared hash table.
LogicalRepWorkerWaiting to read or update the state of logical replication workers.
MultiXactGenWaiting to read or update shared multixact state.
MultiXactMemberBufferWaiting for I/O on a multixact member SLRU buffer.
MultiXactMemberSLRUWaiting to access the multixact member SLRU cache.
MultiXactOffsetBufferWaiting for I/O on a multixact offset SLRU buffer.
MultiXactOffsetSLRUWaiting to access the multixact offset SLRU cache.
MultiXactTruncationWaiting to read or truncate multixact information.
NotifyBufferWaiting for I/O on a NOTIFY message SLRU buffer.
NotifyQueueWaiting to read or update NOTIFY messages.
NotifyQueueTailWaiting to update limit on NOTIFY message storage.
NotifySLRUWaiting to access the NOTIFY message SLRU cache.
OidGenWaiting to allocate a new OID.
ParallelAppendWaiting to choose the next subplan during Parallel Append plan execution.
ParallelBtreeScanWaiting to synchronize workers during Parallel B-tree scan plan execution.
ParallelHashJoinWaiting to synchronize workers during Parallel Hash Join plan execution.
ParallelQueryDSAWaiting for parallel query dynamic shared memory allocation.
ParallelVacuumDSAWaiting for parallel vacuum dynamic shared memory allocation.
PerSessionDSAWaiting for parallel query dynamic shared memory allocation.
PerSessionRecordTypeWaiting to access a parallel query's information about composite types.
PerSessionRecordTypmodWaiting to access a parallel query's information about type modifiers that identify anonymous record types.
PerXactPredicateListWaiting to access the list of predicate locks held by the current serializable transaction during a parallel query.
PgStatsDataWaiting for shared memory stats data access.
PgStatsDSAWaiting for stats dynamic shared memory allocator access.
PgStatsHashWaiting for stats shared memory hash table access.
PredicateLockManagerWaiting to access predicate lock information used by serializable transactions.
ProcArrayWaiting to access the shared per-process data structures (typically, to get a snapshot or report a session's transaction ID).
RelationMappingWaiting to read or update a pg_filenode.map file (used to track the filenode assignments of certain system catalogs).
RelCacheInitWaiting to read or update a pg_internal.init relation cache initialization file.
ReplicationOriginWaiting to create, drop or use a replication origin.
ReplicationOriginStateWaiting to read or update the progress of one replication origin.
ReplicationSlotAllocationWaiting to allocate or free a replication slot.
ReplicationSlotControlWaiting to read or update replication slot state.
ReplicationSlotIOWaiting for I/O on a replication slot.
SerialBufferWaiting for I/O on a serializable transaction conflict SLRU buffer.
SerialControlWaiting to read or update shared pg_serial state.
SerializableFinishedListWaiting to access the list of finished serializable transactions.
SerializablePredicateListWaiting to access the list of predicate locks held by serializable transactions.
SerializableXactHashWaiting to read or update information about serializable transactions.
SerialSLRUWaiting to access the serializable transaction conflict SLRU cache.
SharedTidBitmapWaiting to access a shared TID bitmap during a parallel bitmap index scan.
SharedTupleStoreWaiting to access a shared tuple store during parallel query.
ShmemIndexWaiting to find or allocate space in shared memory.
SInvalReadWaiting to retrieve messages from the shared catalog invalidation queue.
SInvalWriteWaiting to add a message to the shared catalog invalidation queue.
SubtransBufferWaiting for I/O on a sub-transaction SLRU buffer.
SubtransSLRUWaiting to access the sub-transaction SLRU cache.
SyncRepWaiting to read or update information about the state of synchronous replication.
SyncScanWaiting to select the starting location of a synchronized table scan.
TablespaceCreateWaiting to create or drop a tablespace.
TwoPhaseStateWaiting to read or update the state of prepared transactions.
WaitEventCustomWaiting to read or update custom wait events information.
WALInsertWaiting to insert WAL data into a memory buffer.
WALSummarizerWaiting to read or update WAL summarization state.
WALWriteWaiting for WAL buffers to be written to disk.
WrapLimitsVacuumWaiting to update limits on transaction id and multixact consumption.
XactBufferWaiting for I/O on a transaction status SLRU buffer.
XactSLRUWaiting to access the transaction status SLRU cache.
XactTruncationWaiting to execute pg_xact_status or update the oldest transaction ID available to it.
XidGenWaiting to allocate a new transaction ID.

Tableau 27.13. Wait Events of Type Timeout

Timeout Wait EventDescription
BaseBackupThrottleWaiting during base backup when throttling activity.
CheckpointWriteDelayWaiting between writes while performing a checkpoint.
PgSleepWaiting due to a call to pg_sleep or a sibling function.
RecoveryApplyDelayWaiting to apply WAL during recovery because of a delay setting.
RecoveryRetrieveRetryIntervalWaiting during recovery when WAL data is not available from any source (pg_wal, archive or stream).
RegisterSyncRequestWaiting while sending synchronization requests to the checkpointer, because the request queue is full.
SpinDelayWaiting while acquiring a contended spinlock.
VacuumDelayWaiting in a cost-based vacuum delay point.
VacuumTruncateWaiting to acquire an exclusive lock to truncate off any empty pages at the end of a table vacuumed.
WalSummarizerErrorWaiting after a WAL summarizer error.

Voici des exemple pour voir les wait events :

SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL;

 pid  | wait_event_type | wait_event
------+-----------------+------------
 2540 | Lock            | relation
 6644 | LWLock          | ProcArray
(2 rows)

SELECT a.pid, a.wait_event, w.description
  FROM pg_stat_activity a JOIN
       pg_wait_events w ON (a.wait_event_type = w.type AND
                            a.wait_event = w.name)
  WHERE a.wait_event is NOT NULL and a.state = 'active';
-[ RECORD 1 ]------------------------------------------------------​------------
pid         | 686674
wait_event  | WALInitSync
description | Waiting for a newly initialized WAL file to reach durable storage

Note

Les extensions peuvent ajouter des événements Extension, InjectionPoint et LWLock aux listes affichées dans Tableau 27.8 et Tableau 27.12. Dans certains cas, le nom d'un LWLock affecté par une extension ne sera pas disponible pour tous les processus serveur. Il peut être indiqué simplement comme « extension » plutôt que par le nom indiqué par l'extension.

27.2.4. pg_stat_replication #

La vue pg_stat_replication contiendra une ligne par processus d'envoi de WAL, montrant des statistiques sur la réplication avec le serveur standby connecté au processus. Seuls les serveurs standby directement connectés sont listés ; aucune information n'est disponible concernant les serveurs standby en aval.

Tableau 27.14. Vue pg_stat_replication

Type

Description

pid integer

Identifiant du processus d'envoi des WAL

usesysid oid

OID de l'utilisateur connecté à ce processus

usename name

Nom de l'utilisateur connecté à ce processus

application_name text

Nom de l'application qui est connectée à ce processus

client_addr inet

Adresse IP du client connecté à ce processus. Si ce champ est NULL, ceci signifie que le client est connecté via un socket Unix sur la machine serveur.

client_hostname text

Nom de l'hôte du client connecté, comme renvoyé par une recherche DNS inverse sur client_addr. Ce champ sera uniquement non NULL pour les connexions IP, et seulement si log_hostname est activé.

client_port integer

Numéro du port TCP que le client utilise pour la communication avec ce processus, ou -1 si un socket Unix est utilisée.

backend_start timestamp with time zone

Heure à laquelle ce processus a été démarré, exemple, lorsque le client s'est connecté à ce processus expéditeur de WALs.

backend_xmin xid

L'horizon xmin de ce serveur standby renvoyé par hot_standby_feedback.

state text

État courant du processus walsender. Les valeurs possibles sont :

  • startup : Le processus walsender est en cours de démarrage.

  • catchup : Le secondaire connecté au processus walsender est en cours de rattrapage du primaire.

  • streaming : Ce processus walsender envoie les modifications au serveur secondaire connecté depuis que ce dernier a rattrapé le primaire.

  • backup : Ce processus walsender est en train d'envoyer une sauvegarde.

  • stopping : Ce processus walsender est en cours d'arrêt.

sent_lsn pg_lsn

La position de la dernière transaction envoyée sur cette connexion

write_lsn pg_lsn

La position de la dernière transaction écrite sur disque par ce serveur standby

flush_lsn pg_lsn

La position de la dernière transaction vidée sur disque par ce serveur standby

replay_lsn pg_lsn

La position de la dernière transaction rejouée dans la base de données par ce serveur standby

write_lag interval

Durée passée entre le vidage local des WAL récents et la réception de notification que ce serveur secondaire les a bien écrites (mais pas encore vidées ou appliquées). Ceci peut être utilisé pour mesurer le délai que le niveau remote_write de synchronous_commit coûterait lors de la validation si ce serveur était configuré comme un serveur secondaire synchrone.

flush_lag interval

Durée passée entre le vidage local des WAL récents et la réception de notification que ce serveur secondaire les a bien écrites et vidées sur disque (mais pas encore appliquées). Ceci peut être utilisé pour mesurer le délai que le niveau on de synchronous_commit coûterait lors de la validation si ce serveur était configuré comme un serveur secondaire synchrone.

replay_lag interval

Durée passée entre le vidage local des WAL récents et la réception de notification que ce serveur secondaire les a bien écrites, vidées sur disque et appliquées. Ceci peut être utilisé pour mesurer le délai que le niveau remote_apply de synchronous_commit coûterait lors de la validation si ce serveur était configuré comme un serveur secondaire synchrone.

sync_priority integer

Priorité de ce serveur standby pour être choisi comme le serveur standby synchrone dans une réplication synchrone basée sur la priorité. Ceci n'a pas d'effet sur une réplication synchrone basée sur un quorum.

sync_state text

État synchrone de ce serveur standby. Les valeurs possibles sont :

  • async : Ce serveur standby est asynchrone.

  • potential : Ce serveur standby est maintenant asynchrone, mais peut potentiellement devenir synchrone si un des synchrones échoue.

  • sync : Ce serveur standby est synchrone.

  • quorum : Ce serveur standby est considéré comme un candidat dans les standbys avec quorum.

reply_time timestamp with time zone

Horodatage d'envoi du dernier message de réponse reçu par le standby


Les délais rapportés dans la vue pg_stat_replication sont des mesures de temps prises pour l'écriture, le vidage sur disque et le rejeu des données récentes des WAL et pour que le serveur d'envoi soit mis au courant. Ces durées représentent le délai de validation qui a été (ou aurait été) introduit par chaque niveau de validation synchrone si le serveur distant était configuré comme un standby synchrone. Pour un standby asynchrone, la colonne replay_lag renvoie une approximation du délai avant que les transactions récentes deviennent visibles aux requêtes. Si le serveur standby a complètement rattrapé le serveur d'envoi et qu'il n'y a plus d'activité en écriture (donc plus de nouveaux enregistrements dans les journaux de transactions), les délais mesurés le plus récemment continueront à être affichés pendant un court instant, puis seront mis à NULL.

Les délais fonctionnent automatiquement pour la réplication physique. Les plugins de décodage logique pourraient émettre des messages de trace. S'ils ne le font pas, le mécanisme de trace affichera simplement une valeur NULL.

Note

Les délais rapportés ne sont pas des prédictions du temps pris par le serveur standby pour rattraper le serveur d'envoi en constatant le taux actuel de rejeu. Un tel système afficherait des temps similaires alors que de nouveaux journaux de transactions seraient générés, mais différeraient lorsque le serveur deviendrait inactif. En particulier, quand le serveur standby a complètement rattrapé le serveur d'envoi, pg_stat_replication affiche le temps pris pour écrire, vider sur disque et rejouer l'emplacement de l'enregistrement le plus récemment rapporté plutôt que zéro comme certains utilisateurs pourraient s'y attendre. Ceci est cohérent avec le but de mesurer les délais de la validation synchrone et de la visibilité des transactions pour les transactions récentes en écriture. Pour réduire la confusion pour les utilisateurs s'attendant à un autre modèle de retard, les colonnes de retard sont réinitialisées à NULL après un court moment sur un système entièrement à jour et complètement inactif. Les systèmes de supervision devraient choisir s'ils souhaitent représenter ces colonnes comme des données manquantes, des données à zéro, ou continuer à afficher la dernière valeur connue.

27.2.5. pg_stat_replication_slots #

La vue pg_stat_replication_slots contiendra une ligne par slot de réplication logique, montrant les statistiques de son utilisation.

Tableau 27.15. Vue pg_stat_replication_slots

Type de la colonne

Description

slot_name text

Un identifiant, unique à l'instance, pour le slot de réplication

spill_txns bigint

Nombre de transactions déversées sur disque une fois que la mémoire utilisée par le décodage logique pour décoder les changements depuis les WAL, a dépassé logical_decoding_work_mem. Le compteur est incrémenté pour à la fois les transactions de plus haut niveau et les sous-transactions.

spill_count bigint

Nombre de fois où des transactions sont déversées sur disque pendant le décodage des changements des WAL pour ce slot. Ce compteur est incrémenté chaque fois qu'une transaction est déversée, et une même transaction peut déverser plusieurs fois.

spill_bytes bigint

Quantité de données de transaction décodées déversées sur disque pendant le décodage des changements des WAL pour ce slot. Ce compteur et ceux liés au déversement sur disque peuvent être utilisés pour mesurer les E/S qui se produisent lors du décodage logique et permettre d'optimiser logical_decoding_work_mem.

stream_txns bigint

Nombre de transactions en cours envoyées au plugin de sortie de décodage logique après que la mémoire utilisée par le décodage logique pour décoder les changements depuis les WAL pour ce slot a dépassé logical_decoding_work_mem. Le flux de réplication ne fonctionne qu'avec les transactions de plus haut niveau (les sous-transactions ne sont pas envoyées indépendemment), ainsi le compteur n'est pas incrémenté pour les sous-transactions.

stream_countbigint

Nombre de fois ou des transactions en cours sont envoyées au plugin de sortie de décodage logique lors du décodage des changements depuis les WAL pour ce slot. Ce compteur est incrémenté chaque fois qu'une transaction est envoyée, et la même transaction peut être envoyée plusieurs fois.

stream_bytesbigint

Quantité de données de transactions décodées pour les transactions en cours envoyées par flux au plugin de sortie de décodage logique pendant que des changements sont décodés pour ce slot depuis les WAL. Ce compteur et les compteurs similaires liés pour ce slot peuvent être utilisés pour optimiser logical_decoding_work_mem.

total_txns bigint

Nombre de transactions décodées envoyées au plugin de sortie de décodage pour ce slot. Cela ne comprend que les transactions de plus haut niveau pour ce slot, et ce compteur n'est pas incrémenté pour les sous-transactions. Notez que cela inclut les transactions qui sont envoyées par flux et/ou déversées sur disque.

total_bytesbigint

Quantité de données de transactions décodées pour envoyer les transactions au plugin de sortie de décodage pendant que les changements sont décodés depuis les WAL pour ce slot. Notez que cela inclut les transactions qui sont envoyées par flux et/ou déversées sur disque.

stats_reset timestamp with time zone

Date où ces statistiques ont été remises à zéro.


27.2.6. pg_stat_wal_receiver #

La vue pg_stat_wal_receiver contiendra seulement une ligne, affichant les statistiques du walreceiver du serveur de connexion.

Tableau 27.16. Vue pg_stat_wal_receiver

Type

Description

pid integer

Identifiant du processus de réception des enregistrements de transaction

status text

Statut d'activité du processus walreceiver

receive_start_lsn pg_lsn

Première position dans le journal de transaction utilisée quand walreceiver a été démarré

receive_start_tli integer

Première ligne de temps utilisée quand walreceiver a été démarré

written_lsn pg_lsn

Dernier emplacement dans les journaux de transactions ayant déjà été reçu et écrit sur disque, mais non vidé du cache. Ceci ne doit pas être utilisé pour des vérifications sur l'intégrité des données.

flushed_lsn pg_lsn

Dernier emplacement dans les journaux de transactions ayant déjà été reçu et écrit sur disque, et le cache vidé, la valeur initiale de ce champ étant le premier emplacement utilisé lorsque le processus walreceiver a été démarré.

received_tli integer

Numéro de la ligne de temps de la dernière position des journaux de transactions, déjà reçue et écrite sur disque, la valeur initiale de ce champ étant la ligne de temps de la première position dans les journaux de transactions utilisée lors du démarrage du walreceiver

last_msg_send_time timestamp with time zone

Horodatage d'envoi du dernier message reçu à partir du walsender

last_msg_receipt_time timestamp with time zone

Horodatage de la réception du dernier message à partir du walsender

latest_end_lsn pg_lsn

Dernière position de transaction reportée par le walsender associé

latest_end_time timestamp with time zone

Horodatage de la dernière position de transaction reportée par le walsender associé

slot_name text

Nom du slot de réplication utilisé par ce walreceiver

sender_host text

Hôte de l'instance PostgreSQL auquel ce processus « wal receiver » est connecté. Il peut s'agir d'un nom d'hôte, d'une adresse IP ou d'un chemin d'accès à un répertoire si la connexion se fait via un socket Unix (dans ce dernier cas, il est facile de le distinguer car il s'agira toujours d'un chemin absolu débutant par le caractère (/).)

sender_port integer

Numéro de port de l'instance PostgreSQL auquel wal receiver est connecté.

conninfo text

Chaîne de connexion utilisée par ce wal receiver, les informations sensibles au niveau sécurité sont cachés.


27.2.7. pg_stat_recovery_prefetch #

La vue pg_stat_recovery_prefetch contiendra une seule ligne. Les colonnes wal_distance, block_distance et io_depth affichent les valeurs actuelles et les autres colonnes affichent des compteurs cumulatifs qui peuvent être réinitialisés avec la fonction pg_stat_reset_shared.

Tableau 27.17. Vue pg_stat_recovery_prefetch

Type

Description

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation de ces statistiques

prefetch bigint

Nombre de blocs lus en avance parce qu'ils n'étaient pas dans le cache

hit bigint

Nombre de blocs non lus en avance parce qu'ils étaient déjà dans le cache

skip_init bigint

Nombre de blocs non lus dans le cache parce qu'ils devaient être initialisés à zéro

skip_new bigint

Nombre de blocs non lus dans le cache parce qu'ils n'existaient pas encore

skip_fpw bigint

Nombre de blocs non lus dans le cache parce qu'une image complète d'un bloc a été inclus dans le WAL

skip_rep bigint

Nombre de blocs non lus dans le cache parce qu'ils avaient été récemment lus en avance

wal_distance int

Nombre d'octets que le prefetcher recherche

block_distance int

Nombre de blocs que le prefetcher recherche

io_depth int

Nombre de lectures en avance initiées mais pas encore terminées


27.2.8. pg_stat_subscription #

La vue pg_stat_subscription contiendra une ligne par souscription du worker principal (avec le PID NULL si le processus worker n'est pas en cours d'exécution), et des lignes supplémentaires pour les workers gérant la copie initiale de données des tables souscrites.

Tableau 27.18. Vue pg_stat_subscription

Type

Description

subid oid

OID de la souscription

subname name

Nom de la souscription

worker_type text

Type de processus worker pour la souscription. Les types possibles sont apply, parallel apply et table synchronization.

pid integer

Identifiant du processus worker de la souscription

leader_pid integer

Identifiant du processus leader si ce processus est un worker d'application parallélisé ; NULL si ce processus est un worker d'application autonome ou un worker de synchronisation de table

relid oid

OID de la relation que le processus worker synchronise ; NULL pour le processus worker apply principal et ses workers

received_lsn pg_lsn

Dernier emplacement de journal de transactions reçu, la valeur initiale de ce champ étant 0 ; NULL pour les workers apply

last_msg_send_time timestamp with time zone

Horodatage d'envoi du dernier message reçu à partir du walsender original ; NULL pour les workers apply

last_msg_receipt_time timestamp with time zone

Horodatage de réception du dernier message reçu du walsender original ; NULL pour les workers apply

latest_end_lsn pg_lsn

Dernier emplacement des journaux de transactions rapporté par le walsender original ; NULL pour les workers apply

latest_end_time timestamp with time zone

Horodatage du dernier emplacement de journal de transactions rapporté par le walsender original


27.2.9. pg_stat_subscription_stats #

La vue pg_stat_subscription_stats contiendra une ligne par souscription.

Tableau 27.19. Vue pg_stat_subscription_stats

Type de colonne

Description

subid oid

OID de la souscription

subname name

Nom de la souscription

apply_error_count bigint

Nombre de fois où une erreur est survenue lors de l'application des modifications. Note that any conflict resulting in an apply error will be counted in both apply_error_count and the corresponding conflict count (e.g., confl_*).

sync_error_count bigint

Nombre de fois où une erreur est survenue lors de la synchronisation initiale de la table

confl_insert_exists bigint

Number of times a row insertion violated a NOT DEFERRABLE unique constraint during the application of changes. See insert_exists for details about this conflict.

confl_update_origin_differs bigint

Number of times an update was applied to a row that had been previously modified by another source during the application of changes. See update_origin_differs for details about this conflict.

confl_update_exists bigint

Number of times that an updated row value violated a NOT DEFERRABLE unique constraint during the application of changes. See update_exists for details about this conflict.

confl_update_missing bigint

Number of times the tuple to be updated was not found during the application of changes. See update_missing for details about this conflict.

confl_delete_origin_differs bigint

Number of times a delete operation was applied to row that had been previously modified by another source during the application of changes. See delete_origin_differs for details about this conflict.

confl_delete_missing bigint

Number of times the tuple to be deleted was not found during the application of changes. See delete_missing for details about this conflict.

confl_multiple_unique_conflicts bigint

Number of times a row insertion or an updated row values violated multiple NOT DEFERRABLE unique constraints during the application of changes. See multiple_unique_conflicts for details about this conflict.

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation de ces statistiques


27.2.10. pg_stat_ssl #

La vue pg_stat_ssl contiendra une ligne par backend ou processus d'envoi de WAL, montrant des statistiques sur l'usage de SSL dans cette connexion. Elle peut être jointe à pg_stat_activity ou pg_stat_replication sur la colonne pid pour obtenir plus de détails sur la connexion.

Tableau 27.20. Vue pg_stat_ssl

Type

Description

pid integer

ID du processus backend ou du processus d'envoi de WAL

ssl boolean

True si SSL est utilisé dans cette connexion

version text

Version de SSL utilisée, ou NULL si SSL n'est pas utilisé pour cette connexion

cipher text

Nom du chiffrement SSL utilisé, ou NULL si SSL n'est pas utilisé pour cette connexion

bits integer

Nombre de bits dans l'algorithme de chiffrement utilisé, ou NULL si SSL n'est pas utilisé pour cette connexion

client_dn text

Champ Distinguished Name (DN) utilisé par le certificat du client, ou NULL si aucun certificat client n'a été fourni ou si SSL n'est pas utilisé pour cette connexion. Ce champ est tronqué si le champ DN est plus long que NAMEDATALEN (64 caractères dans une compilation standard).

client_serial numeric

Numéro de série du certificat client ou NULL si aucun certificat n'a été fourni ou si le SSL n'est pas utilisé dans cette connexion. La combinaison du numéro de série du certification et de l'émetteur du certificat identifie de façon unique un certificat (sauf si l'émetteur réutilise par erreur les numéros de série).

issuer_dn text

DN de l'émetteur du certificat client ou NULL si aucun certificat client n'a été fourni ou si le SSL n'est pas utilisé dans cette connexion. Ce champ est tronqué comme client_dn.


27.2.11. pg_stat_gssapi #

La vue pg_stat_gssapi contient une ligne par processus serveur, affichant des informations sur l'utilisation de GSSAPI pour cette connexion. Elle peut être jointe à pg_stat_activity ou pg_stat_replication sur la colonne pid pour obtenir plus de détails sur la connexion.

Tableau 27.21. Vue pg_stat_gssapi

Type

Description

pid integer

Identifiant du processus serveur

gss_authenticated boolean

True si l'authentification GSSAPI a été utilisée pour cette connexion

principal text

Principal utilisé pour authentifier cette connexion, ou NULL si GSSAPI n'a pas été utilisé pour authentifier cette connexion. Ce champ est tronqué si le principal est plus long que NAMEDATALEN (64 caractères dans une construction standard).

encrypted boolean

True si le chiffrement GSSAPI est utilisé avec cette connexion

credentials_delegated boolean

Vrai si les informations d'identification GSSAPI ont été déléguées sur cette connexion.


27.2.12. pg_stat_archiver #

La vue pg_stat_archiver aura toujours une seule ligne contenant les données du processus d'archivage de l'instance.

Tableau 27.22. Vue pg_stat_archiver

Type

Description

archived_count bigint

Nombre de journaux de transactions archivés avec succès

last_archived_wal text

Nom du plus récent journal de transaction archivé avec succès

last_archived_time timestamp with time zone

Horodatage de la plus récente opération d'archivage réussie

failed_count bigint

Nombre d'échecs d'archivage de journaux de transactions

last_failed_wal text

Nom du journal de transactions correspondant au plus récent archivage échoué

last_failed_time timestamp with time zone

Horodatage de la plus récente opération d'archivage échouée

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation de ces statistiques


Habituellement, les fichiers WAL sont archivés dans l'ordre, du plus ancien ou plus récent, mais ceci n'est pas garanti et ne tient pas sous certaines circonstances, comme lors de la promotion d'un serveur secondaire ou lors d'une restauration après crash. De ce fait, il n'est pas garanti que tous les fichiers plus anciens que last_archived_wal aient été correctement archivés.

27.2.13. pg_stat_io #

La vue pg_stat_io contient une ligne pour chaque combinaisons de type de processus, objet cible d'entrées/sorties disques, et contexte d'entrées/sorties disques, affichant des statistiques sur l'utilisation des entrées/sorties disques par l'instance. Les combinaisons qui n'ont pas de sens sont omises.

Actuellement, les entrées/sorties disques sur des relations (par exemple, tables, index) et sur les WAL sont tracées. Néanmoins, les entrées/sorties disques qui ne passent pas par le cache disque (par exemple lors du déplacement d'une table d'un tablespace à un autre) ne sont pas actuellement tracées.

Tableau 27.23. Vue de pg_stat_io

Type de colonne

Description

backend_type text

Type de processus backend (par exemple un background worker, un autovacuum worker). Voir pg_stat_activity pour plus d'informations sur les différents backend_type. Certains backend_type n'accumulent pas de statistiques sur les entrées/sorties disques et ne seront pas inclus dans la vue.

object text

Objet cible d'une opération d'entrées/sorties disques. Les valeurs possibles sont :

  • relation : relations permanentes.

  • temp relation : relations temporaires.

  • wal: Write Ahead Logs.

context text

Le contexte d'une opération d'entrées/sorties disques. Les valeurs possibles sont :

  • normal : Le context par défaut ou standard pour un type d'opérations d'entrées/sorties disques. Par exemple, par défaut, les données des relation sont lues et écrites via le cache disque. De ce fait, les lectures et écritures des données des relations à partir du cache sont tracées dans le context normal.

  • init: I/O operations performed while creating the WAL segments are tracked in context init.

  • vacuum : les opérations d'entrées/sorties disques réalisées en dehors du cache disque lors du nettoyage et de l'analyse des relations permanentes. Le nettoyage des tables temporaires utilisent le même cache local que les autres opérations d'entrées/sorties disques des tables temporaires et sont tracées dans le context normal.

  • bulkread : certaines grosses opérations de lecture faites en dehors du cache disque, par exemple pour un parcours séquentiel d'une grosse table.

  • bulkwrite : certaines grosses opérations d'écriture faites en dehors du cache disque, telles que COPY.

reads bigint

Nombre d'opérations de lectures.

read_bytes numeric

The total size of read operations in bytes.

read_time double precision

Time spent waiting for read operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)

writes bigint

Nombre d'opérations d'écritures.

write_bytes numeric

The total size of write operations in bytes.

write_time double precision

Time spent waiting for write operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)

writebacks bigint

Number of units of size BLCKSZ (typically 8kB) which the process requested the kernel write out to permanent storage.

writeback_time double precision

Temps passé à attendre la réalisation d'opérations de réécriture en millisecondes (si track_io_timing est activé, sinon zéro). Ceci inclut le temps passé en queue pour les demandes d'écriture et, potentiellement, le temps passé à écrire des données modifiées.

extends bigint

Nombre d'opérations d'agrandissement de relations, chacune de la taille spécifiée dans op_bytes.

extend_bytes numeric

The total size of relation extend operations in bytes.

extend_time double precision

Nombre d'octets par unité de lecture, écriture ou agrandissement.

Time spent waiting for extend operations in milliseconds. (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)

hits bigint

Nombre de fois qu'un bloc désiré a été trouvé dans le cache disque.

evictions bigint

Nombre de fois qu'un bloc a été écrit à partir d'un cache partagé ou local pour le rendre disponible à d'autres utilisations.

Dans un context normal, cela compte le nombre de fois où un bloc a été enlevé d'un cache et remplacé par un autre bloc. Dans les contextes bulkwrite, bulkread et vacuum, cela compte le nombre de fois où un bloc a été enlevé du cache partagé pour ajouter le bloc dans un buffer séparé de taille limitée pour une utilisation dans le cas d'opération d'entrées/sorties disques en masse.

reuses bigint

Le nombre de fois où un buffer existant dans un buffer de taille limité a été réutilisé dans le cadre d'une opération d'entrées/sorties disques des contextes bulkread, bulkwrite ou vacuum.

fsyncs bigint

Nombre d'appels à fsync. Ils sont tracés uniquement dans le context normal.

fsync_time double precision

Time spent waiting for fsync operations in milliseconds (if track_io_timing is enabled and object is not wal, or if track_wal_io_timing is enabled and object is wal, otherwise zero)

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation des statistiques.


Certains types de processus backend ne réalisent jamais d'opérations d'entrées/sorties sur certains objets et/ou certains contextes. Ces lignes sont omises de la vue. Par exemple, le checkpointer ne s'occupe pas des tables temporaires, donc il n'y aura pas de lignes pour backend_type checkpointer et object temp relation.

De plus, certaines opérations d'entrées/sorties disques ne seront jamais réalisées, soit par certains types de backends soit par certains objets soit par certains contextes. Ces cellules seront à NULL. Par exemple, les tables temporaires ne sont jamais synchronisées sur disque (fsync), donc la colonne fsyncs sera à NULL pour object temp relation. De plus, le background writer ne fait pas de lectures, donc la colonne reads seront NULL pour les lignes backend_type background writer.

For the object wal, fsyncs and fsync_time track the fsync activity of WAL files done in issue_xlog_fsync. writes and write_time track the write activity of WAL files done in XLogWrite. See Section 28.5 for more information.

pg_stat_io peut être utilisé pour informer sur l'optimisation de la base. Par exemple :

  • Un grand nombre d'évictions peut indiquer que le cache disque (paramètre shared_buffers) doit être augmenté.

  • Les backends clients se basent sur le checkpointer pour s'assurer que les données sont enregistrées sur un stockage permanent. De grands nombres pour fsyncs pour client backend pourrait indiquer une mauvaise configuration du cache disque ou du checkpointer. Il existe plus d'informations sur la configuration du checkpointer dans Section 28.5.

  • Habituellement, les backends client doivent être capable de se baser sur les processus auxiliaires tels que le checkpointer et le background writer pour écrire autant que possible les données modifiées. De grands nombres d'écritures par des backends clients peuvent indiquer une mauvaise configuration du cache disque ou du checkpointer. Plus d'informations sur le checkpointer sont disponibles dans Section 28.5.

Note

Les colonnes traçant les durées d'attentes des entrées/sorties disques seront à des valeurs différentes de zéro si track_io_timing est activé. L'utilisateur doit faire attention lors de l'utilisation de ces colonnes avec celles opérations d'entrée/sorties disqe correspondantes au cas où track_io_timing n'était pas activé en permanence depuis la dernière réinitialisation des statistiques.

27.2.14. pg_stat_bgwriter #

La vue pg_stat_bgwriter aura toujours une ligne unique, contenant les données sur le processus background writer de l'instance.

Tableau 27.24. Vue pg_stat_bgwriter

Type

Description

buffers_clean bigint

Nombre de tampons écrits par le processus background writer (processus d'écriture en tâche de fond)

maxwritten_clean bigint

Nombre de fois que le processus background writer a arrêté son parcours de nettoyage pour avoir écrit trop de tampons

buffers_alloc bigint

Nombre de tampons alloués

stats_reset timestamp with time zone

Dernière fois que ces statistiques ont été réinitialisées


27.2.15. pg_stat_checkpointer #

La vue pg_stat_checkpointer aura toujours une seule ligne, contenant des données sur le processus checkpointer de l'instance.

Tableau 27.25. Vue pg_stat_checkpointer

Type

Description

num_timed bigint

Nombre de checkpoints planifiés suite au dépassement du délai.

num_requested bigint

Nombre de checkpoints réclamés.

num_done bigint

Number of checkpoints that have been performed

restartpoints_timed bigint

Nombre de restartpoints planifiés suit à un dépassement de délai ou à une tentative échouée

restartpoints_req bigint

Nombre de restartpoints réclamés

restartpoints_done bigint

Nombre de restartpoints réalisés

write_time double precision

Durée totale passée dans la portion de traitement des checkpoints et restartpoints où des fichiers ont été écrits sur disque, en millisecondes

sync_time double precision

Durée totale passée dans la portion de traitement des checkpoints et restartpoints où des fichiers ont été synchronisés sur disque, en millisecondes

buffers_written bigint

Number of shared buffers written during checkpoints and restartpoints

slru_written bigint

Number of SLRU buffers written during checkpoints and restartpoints

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation de ces statistiques


Checkpoints may be skipped if the server has been idle since the last one. num_timed and num_requested count both completed and skipped checkpoints, while num_done tracks only the completed ones. Similarly, restartpoints may be skipped if the last replayed checkpoint record is already the last restartpoint. restartpoints_timed and restartpoints_req count both completed and skipped restartpoints, while restartpoints_done tracks only the completed ones.

27.2.16. pg_stat_wal #

La vue pg_stat_wal a toujours une ligne, contenant les données sur l'activité des journaux de transaction de l'instance.

Tableau 27.26. Vue pg_stat_wal

Type de la colonne

Description

wal_records bigint

Nombre total d'enregistrements générés dans les journaux de transaction

wal_fpi bigint

Nombre total d'images de pages complètes générées dans les journaux de transactions

wal_bytes numeric

Quantité totale de journaux de transactions générés en octets.

wal_buffers_full bigint

Nombre de fois où des données de journaux de transactions ont été écrites sur disque parce que le cache des journaux de transactions était rempli

stats_reset timestamp with time zone

Date où ces statistiques ont été remises à zéro


27.2.17. pg_stat_database #

La vue pg_stat_database ne contiendra qu'une ligne pour chaque base de données dans l'instance, plus une pour les objets partagés, montrant ses statistiques globales.

Tableau 27.27. Vue pg_stat_database

Type

Description

datid oid

OID d'une base de données, ou 0 pour les objets partagés

datname name

Nom de cette base de données, or NULL pour les objets partagés

numbackends integer

Nombre de processus serveur actuellement connectés à cette base de données, ou NULL pour les objets partagés. C'est la seule colonne de cette vue qui renvoie une valeur reflétant l'état actuel ; toutes les autres colonnes renvoient les valeurs accumulées depuis la dernière réinitialisation

xact_commit bigint

Nombre de transactions de cette base de données qui ont été validées

xact_rollback bigint

Nombre de transactions de cette base de données qui ont été annulées

blks_read bigint

Nombre de blocs disques lus dans cette base de données

blks_hit bigint

Nombre de fois que des blocs disques étaient déjà dans le cache tampon, et qu'il n'a donc pas été nécessaire de les lire sur disque (cela n'inclut que les accès dans le cache tampon de PostgreSQL, pas dans le cache de fichiers du système d'exploitation).

tup_returned bigint

Nombre de lignes vivantes récupérées par des parcours séquentiels et par des enregistrements d'index renvoyés par les parcours d'index dans cette base

tup_fetched bigint

Nombre de lignes vivantes récupérées par les parcours d'index dans cette base

tup_inserted bigint

Nombre de lignes insérées par des requêtes dans cette base de données

tup_updated bigint

Nombre de lignes mises à jour par des requêtes dans cette base de données

tup_deleted bigint

Nombre de lignes supprimées par des requêtes dans cette base de données

conflicts bigint

Nombre de requêtes annulées à cause de conflits avec la restauration dans cette base de données. (Les conflits n'arrivent que sur des serveurs de standby ; voir pg_stat_database_conflicts pour plus de détails.)

temp_files bigint

Nombre de fichiers temporaires créés par des requêtes dans cette base de données. Tous les fichiers temporaires sont comptabilisés, quel que soit la raison de la création du fichier temporaire (par exemple, un tri ou un hachage) et quel que soit la valeur du paramètre log_temp_files.

temp_bytes bigint

Quantité totale de données écrites dans des fichiers temporaires par des requêtes dans cette base de données. Tous les fichiers temporaires sont comptabilisés, quel que soit la raison de la création de ce fichier temporaire, et de la valeur du paramètre log_temp_files.

deadlocks bigint

Nombre de verrous mortels détectés dans cette base de données

checksum_failures bigint

Nombre d'échecs pour la vérification des sommes de contrôle détectés sur cette base de données (ou sur un objet partagé), ou NULL si les sommes de contrôle sont désactivées.

checksum_last_failure timestamp with time zone

Horodatage du dernier échec de vérification de somme de contrôle pour un bloc détecté dans cette base (ou sur un objet partagé), ou NULL si les sommes de contrôle sont désactivées.

blk_read_time double precision

Temps passé à lire des blocs de donnée dans des fichiers par des processus serveur dans cette base de données, en millisecondes (si track_io_timing est activé, sinon zéro)

blk_write_time double precision

Temps passé à écrire des blocs de données dans des fichiers par les processus serveur dans cette base de données, en millisecondes (si track_io_timing est activé, sinon zéro)

session_time double precision

Temps passé à écrire par les sessions de cette base de données, en millisecondes (notez que les statistiques sont seulement mises à jour quand l'état d'une session change, ainsi si des sessions ont été inactives longtemps, ce temps d'inactivité ne sera pas inclus)

active_time double precision

Temps passé à exécuter des expressions SQL dans cette base de données, en millisecondes (ceci correspond à l'état actif ainsi qu'à l'appel de fonction fastpath dans pg_stat_activity)

idle_in_transaction_time double precision

Temps passé inactif dans une transaction dans cette base de données, en millisecondes (cela correspond aux états inactif dans une transaction (« idle in transaction ») et inactif dans une transaction (annulé) (« idle in transaction (aborted) ») dans pg_stat_activity)

sessions bigint

Nombre total de sessions établies dans cette base de données

sessions_abandoned bigint

Nombre de sessions dans cette base de données qui ont été terminées parce que la connexion au client a été perdue

sessions_fatal bigint

Nombre de sessions dans cette base de données qui ont été terminées par des erreurs fatales

sessions_killed bigint

Nombre de sessions dans cette base de données qui ont été terminées par l'intervention d'un opérateur

parallel_workers_to_launch bigint

Number of parallel workers planned to be launched by queries on this database

parallel_workers_launched bigint

Number of parallel workers launched by queries on this database

stats_reset timestamp with time zone

Dernière fois que ces statistiques ont été réinitialisées


27.2.18. pg_stat_database_conflicts #

Avertissement

Utiliser pg_stat_reset() réinitialise aussi les compteurs que l'autovacuum utilise pour déterminer quand déclencher une opération VACUUM ou une opération ANALYZE. Réinitialiser ces compteurs peut empêcher l'autovacuum de réaliser un travail pourtant nécessaire, ce qui entrainerait comme conséquence une fragmentation des tables ou des statistiques obsolètes sur les données des tables. Un ANALYZE sur la base est recommandé après avoir réinitialisé les statistiques.

La vue pg_stat_database_conflicts contiendra une ligne par base de données, montrant des statistiques au niveau de chaque base de données concernant les requêtes annulées survenant à cause de conflits avec la restauration sur des serveurs standby. Cette vue contiendra seulement des informations sur les serveurs standby, dans la mesure où aucun conflit ne survient sur les serveurs primaires.

Tableau 27.28. Vue pg_stat_database_conflicts

Type

Description

datid oid

OID de la base de données

datname name

Nom de cette base de données

confl_tablespace bigint

Nombre de requêtes dans cette base de données qui ont été annulées suite à la suppression de tablespaces

confl_lock bigint

Nombre de requêtes dans cette base de données qui ont été annulées suite à des délais dépassés sur des verrouillages

confl_snapshot bigint

Nombre de requêtes dans cette base de données qui ont été annulées à cause d'instantanés trop vieux

confl_bufferpin bigint

Nombre de requêtes dans cette base de données qui ont été annulées à cause de tampons verrouillés

confl_deadlock bigint

Nombre de requêtes dans cette base de données qui ont été annulées à cause de deadlocks

confl_active_logicalslot bigint

Nombre d'utilisations de slots logiques dans cette base de données qui ont été annulées parce que le snapshot était trop ancien ou parce que le paramètre wal_level était trop bas sur le primaire


27.2.19. pg_stat_all_tables #

La vue pg_stat_all_tables contiendra une ligne par table dans la base de données courante (incluant les tables TOAST), montrant les statistiques d'accès pour cette table spécifiquement. Les vues pg_stat_user_tables et pg_stat_sys_tables contiennent les mêmes informations, mais filtrent respectivement les tables utilisateurs et les tables systèmes.

Tableau 27.29. Vue pg_stat_all_tables

Type

Description

relid oid

OID d'une table

schemaname name

Nom du schéma dans lequel se trouve cette table

relname name

Nom de cette table

seq_scan bigint

Nombre de parcours séquentiels initiés sur cette table

last_seq_scan timestamp with time zone

Horodatage du dernier parcours séquentiel, basé sur l'heure de fin de la transaction la plus récente

seq_tup_read bigint

Nombre de lignes vivantes rapportées par des parcours séquentiels

idx_scan bigint

Nombre de parcours d'index initiés sur cette table

last_idx_scan timestamp with time zone

Horodatage du dernier parcours d'index, basé sur l'heure de fin de la transaction la plus récente

idx_tup_fetch bigint

Nombre de lignes vivantes rapportées par des parcours d'index

n_tup_ins bigint

Nombre total de lignes insérées

n_tup_upd bigint

Nombre total de lignes mises à jour. (Ceci inclut les mises à jour comptées dans n_tup_hot_upd et n_tup_newpage_upd, ainsi que les mises à jour non-HOT.)

n_tup_del bigint

Nombre total de lignes supprimées

n_tup_hot_upd bigint

Nombre de lignes mises à jour en utilisant HOT. Ce sont les mises à jour qui n'ont pas nécessitées de nouvelles versions dans les index.

n_tup_newpage_upd bigint

Nombre de lignes mises à jour où la nouvelle version de ligne va sur un nouveau bloc du HEAP, laissant derrière la version originale dont le champ t_ctid pointe vers un bloc HEAP différent. Ce sont toujours des mises à jour non-HOT.

n_live_tup bigint

Nombre estimé de lignes vivantes

n_dead_tup bigint

Nombre estimé de lignes mortes

n_mod_since_analyze bigint

Nombre estimé de lignes modifiées depuis le dernier ANALYZE sur cette table

n_ins_since_vacuum bigint

Nombre estimé de lignes insérées depuis le dernier VACUUM sur cette table

last_vacuum timestamp with time zone

Dernière fois qu'une opération VACUUM manuelle a été faite sur cette table (sans compter  VACUUM FULL)

last_autovacuum timestamp with time zone

Dernière fois que le démon autovacuum a exécuté une opération VACUUM sur cette table

last_analyze timestamp with time zone

Dernière fois qu'une opération ANALYZE a été lancée manuellement sur cette table

last_autoanalyze timestamp with time zone

Dernière fois que le démon autovacuum a exécuté une opération ANALYZE sur cette table

vacuum_count bigint

Nombre de fois qu'une opération VACUUM manuelle a été lancée sur cette table (sans compter VACUUM FULL)

autovacuum_count bigint

Nombre de fois que le démon autovacuum a exécuté une opération VACUUM manuelle

analyze_count bigint

Nombre de fois qu'une opération ANALYZE manuelle a été lancée sur cette table

autoanalyze_count bigint

Nombre de fois que le démon autovacuum a exécuté une opération ANALYZE sur cette table

total_vacuum_time double precision

Total time this table has been manually vacuumed, in milliseconds. (This includes the time spent sleeping due to cost-based delays.)

total_autovacuum_time double precision

Total time this table has been vacuumed by the autovacuum daemon, in milliseconds. (This includes the time spent sleeping due to cost-based delays.)

total_analyze_time double precision

Total time this table has been manually analyzed, in milliseconds. (This includes the time spent sleeping due to cost-based delays.)

total_autoanalyze_time double precision

Total time this table has been analyzed by the autovacuum daemon, in milliseconds. (This includes the time spent sleeping due to cost-based delays.)


27.2.20. pg_stat_all_indexes #

La vue pg_stat_all_indexes contiendra une ligne pour chaque index dans la base de données courante, montrant les statistiques d'accès sur cet index spécifiquement. Les vues pg_stat_user_indexes et pg_stat_sys_indexes contiennent la même information, mais sont filtrées pour ne montrer respectivement que les index utilisateurs et les index système.

Tableau 27.30. Vue pg_stat_all_indexes

Type

Description

relid oid

OID de la table pour cet index

indexrelid oid

OID de cet index

schemaname name

Nom du schéma dans lequel se trouve cet index

relname name

Nom de la table pour cet index

indexrelname name

Nom de cet index

idx_scan bigint

Nombre de parcours d'index initiés par cet index

last_idx_scan timestamp with time zone

L'horodatage du dernier parcours de cet index, basé sur l'heure de fin de la transaction la plus récente

idx_tup_read bigint

Nombre d'entrées d'index retournées par des parcours sur cet index

idx_tup_fetch bigint

Nombre de lignes vivantes de la table rapportées par des simples parcours d'index utilisant cet index


Les index peuvent être utilisés avec un simple parcours d'index, un parcours d'index « bitmap » ou l'optimiseur. Dans un parcours de bitmap, les sorties de plusieurs index peuvent être combinées avec des règles AND ou OR, c'est pourquoi il est difficile d'associer des lectures de lignes individuelles de la table avec des index spécifiques quand un parcours de bitmap est utilisé. Par conséquent, un parcours de bitmap incrémente le(s) valeur(s) de pg_stat_all_indexes. idx_tup_read pour le(s) index qu'il utilise, et incrémente la valeur de pg_stat_all_tables. idx_tup_fetch pour la table, mais il n'affecte pas pg_stat_all_indexes.idx_tup_fetch. L'optimiseur accède également aux index pour vérifier si des constantes fournies sont en dehors des plages de valeurs enregistrées par les statistiques de l'optimiseur car celles-ci peuvent ne pas être à jour.

Note

Les valeurs de idx_tup_read et idx_tup_fetch peuvent être différentes même sans aucune utilisation de parcours de bitmap, car idx_tup_read comptabilise les entrées d'index récupérées de cet index alors que idx_tup_fetch comptabilise le nombre de lignes vivantes rapportées de la table. Le second sera moindre si des lignes mortes ou pas encore validées sont rapportées en utilisant l'index, ou si des lectures de lignes de la table sont évitées grâce à un parcours d'index seul.

Note

Index scans may sometimes perform multiple index searches per execution. Each index search increments pg_stat_all_indexes.idx_scan, donc il est possible que le nombre de parcours d'index dépasse significativement le nombre total d'exécutions du nœud de parcours d'index de l'exécuteur.

This can happen with queries that use certain SQL constructs to search for rows matching any value out of a list or array of multiple scalar values (see Section 9.25). It can also happen to queries with a column_name = value1 OR column_name = value2 ... construct, though only when the optimizer transforms the construct into an equivalent multi-valued array representation. Similarly, when B-tree index scans use the skip scan optimization, an index search is performed each time the scan is repositioned to the next index leaf page that might have matching tuples (see Section 11.3).

Astuce

EXPLAIN ANALYZE outputs the total number of index searches performed by each index scan node. See Section 14.1.2 for an example demonstrating how this works.

27.2.21. pg_statio_all_tables #

La vue pg_statio_all_tables contiendra une ligne pour chaque table dans la base de données courante (en incluant les tables TOAST), montrant les statistiques d'entrées/sorties de chaque table spécifiquement. Les vues pg_statio_user_tables et pg_statio_sys_tables contiennent la même information, mais sont filtrées pour ne montrer respectivement que les tables utilisateurs et les tables système.

Tableau 27.31. Vue pg_statio_all_tables

Type

Description

relid oid

OID d'une table

schemaname name

Nom du schéma dans lequel se trouve cette table

relname name

Nom de cette table

heap_blks_read bigint

Nombre de blocs disque lus hors cache pour cette table

heap_blks_hit bigint

Nombre de blocs disque lus dans le cache pour cette table

idx_blks_read bigint

Nombre de blocs disque lus hors cache pour tous les index de cette table

idx_blks_hit bigint

Nombre de tampons lus dans le cache pour tous les index de cette table

toast_blks_read bigint

Nombre de blocs disque lus sur la partie TOAST de cette table (si présente)

toast_blks_hit bigint

Nombre de tampons récupérés sur la partie TOAST de cette table (si présente)

tidx_blks_read bigint

Nombre de blocs disque lus sur les index de la partie TOAST de cette table (si présente)

tidx_blks_hit bigint

Nombre de tampons récupérés sur les index de la partie TOAST de cette table (si présente)


27.2.22. pg_statio_all_indexes #

La vue pg_statio_all_indexes contiendra une ligne pour chaque index dans la base de données courante, montrant les statistiques d'entrées/sorties sur chaque index spécifiquement. Les vues pg_statio_user_indexes et pg_statio_sys_indexes contiennent la même information, mais sont filtrées pour ne montrer respectivement que les tables utilisateur et tables système.

Tableau 27.32. Vue pg_statio_all_indexes

Type

Description

relid oid

OID de la table pour cet index

indexrelid oid

OID de cet index

schemaname name

Nom du schéma dans lequel se trouve cet index

relname name

Nom de la table pour cet index

indexrelname name

Nom de cet index

idx_blks_read bigint

Nombre de blocs disque lus pour cet index

idx_blks_hit bigint

Nombre de tampons récupérés sur cet index


27.2.23. pg_statio_all_sequences #

La vue pg_statio_all_sequences contiendra une ligne pour chaque séquence dans la base de données courante, montrant les statistiques d'entrées/sorties pour chaque séquence spécifiquement.

Tableau 27.33. Vue pg_statio_all_sequences

Type

Description

relid oid

OID de cette séquence

schemaname name

Nom du schéma dans lequel se trouve cette séquence

relname name

Nom de cette séquence

blks_read bigint

Nombre de blocs disque lus pour cette séquence

blks_hit bigint

Nombre de tampons récupérés pour cette séquence


27.2.24. pg_stat_user_functions #

La vue pg_stat_user_functions contiendra une ligne pour chaque fonction suivie, montrant les statistiques d'exécution de cette fonction. Le paramètre track_functions contrôle exactement quelles fonctions sont suivies.

Tableau 27.34. Vue pg_stat_user_functions

Type

Description

funcid oid

OID de cette fonction

schemaname name

Nom du schéma dans lequel se trouve cette fonction

funcname name

Nom de cette fonction

calls bigint

Nombre de fois que cette fonction a été appelée

total_time double precision

Temps total passé dans cette fonction ainsi que dans toutes les autres fonctions appelées par elle, en millisecondes

self_time double precision

Temps total passé dans cette fonction seule, sans inclure les autres fonctions appelées par elle, en millisecondes


27.2.25. pg_stat_slru #

PostgreSQL accède à certaines informations stockées sur disque via des caches SLRU (simple least-recently-used). La vue pg_stat_slru contiendra une ligne pour chaque cache SLRU tracé, affichant des statistiques sur l'accès aux pages cachées.

Pour chaque cache SLRU qui fait partie du cœur du serveur, il existe un paramètre de configuration permettant de contrôler sa taille, avec le suffixe _buffers ajouté.

Tableau 27.35. Vue pg_stat_slru

Type

Description

name text

Nom du cache SLRU

blks_zeroed bigint

Nombre de blocs initialisés à zéro

blks_hit bigint

Nombre de fois que les blocs disques ont été trouvés dans le cache SLRU, et donc qu'une lecture disque n'était pas nécessaire (ceci inclut seulement les lectures dans le cache SLRU, pas les lectures dans le cache du système d'exploitation)

blks_read bigint

Nombre de blocs disques lus à partir de ce cache SLRU

blks_written bigint

Nombre de blocs disques écrit dans ce cache SLRU

blks_exists bigint

Nombre de blocs dont l'existence a été vérifiée dans ce cache SLRU

flushes bigint

Nombre de vidages de données modifiées pour ce cache SLRU

truncates bigint

Nombre de troncatures pour ce cache SLRU

stats_reset timestamp with time zone

Horodatage de la dernière réinitialisation de ces statistiques


27.2.26. Fonctions statistiques #

Une autre façon de regarder les statistiques peut être mise en place en écrivant des requêtes utilisant les mêmes fonctions d'accès sous- jacentes utilisées par les vues standards montrées au-dessus. Pour des détails comme les noms de fonction, veuillez consulter les définitions de ces vues standards. (Par exemple, dans psql vous pouvez utiliser \d+ pg_stat_activity.) Les fonctions d'accès pour les statistiques par base de données prennent comme argument un OID pour identifier sur quelle base de données travailler. Les fonctions par table et par index utilisent un OID de table ou d'index. Les fonctions pour les statistiques par fonctions utilisent un OID de fonction. Notez que seuls les tables, index et fonctions dans la base de données courante peuvent être vus avec ces fonctions.

Les fonctions supplémentaires liées au système de statistiques cumulatives sont listées dans Tableau 27.36.

Tableau 27.36. Fonctions supplémentaires de statistiques

Fonction

Description

pg_backend_pid () → integer

Identifiant du processus serveur gérant la session courante.

pg_stat_get_xact_blocks_fetched ( oid ) → bigint

Renvoie le nombre de demandes de lecture de bloc pour la table ou l'index dans la transaction en cours. Ce nombre soustrait à pg_stat_get_xact_blocks_hit donne le nombre d'appels à la fonction noyau read() ; le nombre de lectures physiques réelles est généralement plus basse grâce au cache au niveau noyau.

pg_stat_get_xact_blocks_hit ( oid ) → bigint

Renvoie le nombre de demandes de lecture de bloc pour la table ou l'index dans la transaction en cours, trouvé dans le cache (donc ne déclenchant pas les appels à la fonction noyau read()).

pg_stat_get_backend_io ( integer ) → setof record

Returns I/O statistics about the backend with the specified process ID. The output fields are exactly the same as the ones in the pg_stat_io view.

The function does not return I/O statistics for the checkpointer, the background writer, the startup process and the autovacuum launcher as they are already visible in the pg_stat_io view and there is only one of each.

pg_stat_get_activity ( integer ) → setof record

Retourne un enregistrement d'informations sur le processus serveur du PID spécifié, ou un enregistrement pour chaque processus serveur actif dans le système si NULL est spécifié. Les champs retournés sont des sous-ensembles de ceux dans la vue pg_stat_activity.

pg_stat_get_backend_wal ( integer ) → record

Returns WAL statistics about the backend with the specified process ID. The output fields are exactly the same as the ones in the pg_stat_wal view.

The function does not return WAL statistics for the checkpointer, the background writer, the startup process and the autovacuum launcher.

pg_stat_get_snapshot_timestamp () → timestamp with time zone

Renvoie l'horodate du snapshot des statistiques actuelles, ou NULL si aucun snapshot n'a été pris. Un snapshot est pris la première fois que des statistiques cumulatives sont accédées dans une transaction si le paramètre stats_fetch_consistency vaut snapshot.

pg_stat_clear_snapshot () → void

Annule le snapshot actuel ou les informations en cache sur les statistiques.

pg_stat_reset () → void

Réinitialise à 0 tous les compteurs statistiques pour la base de données actuelle.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_shared ( [ target text DEFAULT NULL ] ) → void

Réinitialise à 0 les compteurs statistiques de l'instance, suivant l'argument. target peut valoir :

  • archiver : Réinitialise tous les compteurs affichés dans la vue pg_stat_archiver.

  • bgwriter : Réinitialise tous les compteurs affichés dans la vue pg_stat_bgwriter.

  • checkpointer : Réinitialise tous les compteurs affichés dans la vue pg_stat_checkpointer.

  • io : Réinitialise tous les compteurs affichés dans la vue pg_stat_io.

  • recovery_prefetch : Réinitialise tous les compteurs affichés dans la vue pg_stat_recovery_prefetch.

  • slru : Réinitialise tous les compteurs affichés dans la vue pg_stat_slru.

  • wal : Réinitialise tous les compteurs affichés dans la vue pg_stat_wal.

  • NULL ou non spécifié : Réinitialise tous les compteurs de toutes les vues.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_single_table_counters ( oid ) → void

Réinitialise à 0 les statistiques pour une table ou un index dans la base de données courante ou partagé pour toutes bases de l'instance.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_backend_stats ( integer ) → void

Resets statistics for a single backend with the specified process ID to zero.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function.

pg_stat_reset_single_function_counters ( oid ) → void

Réinitialise à 0 les statistiques pour une fonction dans la base de données courante.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_slru ( [ target text DEFAULT NULL ] ) → void

Réinitialise à 0 les statistiques à un cache SLRU, ou pour toutes les SLRU de l'instance. Si target vaut NULL ou n'est pas spécifié, tous les compteurs affichés dans la vue pg_stat_slru sont réinitialisés pour tous les caches SLRU. L'argument fait partie de commit_timestamp, multixact_member, multixact_offset, notify, serializable, subtransaction ou transaction pour réinitialiser les compteurs pour cette seule entrée. Si l'argument est other (ou tout nom non reconnu), alors les compteurs de tous les autres caches SLRU, comme ceux définis par des extensions, sont réinitialisés.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_replication_slot ( text ) → void

Remet à zéro les statistiques du slot de réplication définies par l'argument. Si l'argument est NULL, réinitialise les statistiques pour tous les slots de réplication.

Cette fonction est restreinte aux superutilisateurs par défaut, mais d'autres utilisateurs peuvent avoir le droit EXECUTE pour exécuter la fonction.

pg_stat_reset_subscription_stats ( oid ) → void

Réinitialise à zéro les statistiques d'une seule souscription affichée dans la vue pg_stat_subscription_stats. Si l'argument vaut NULL, réinitialise les statistiques pour toutes les souscriptions.

Cette fonction est restreinte par défaut aux superutilisateurs, mais les autres utilisateurs peuvent se voir attribuer le droit EXECUTE pour exécuter la fonction.


pg_stat_get_activity, la fonction sous-jacente de la vue pg_stat_activity, retourne un ensemble d'enregistrements contenant toute l'information disponible sur chaque processus serveur. Parfois il peut être plus pratique de n'obtenir qu'un sous-ensemble de cette information. Dans ces cas-là, un autre ensemble de fonctions d'accès aux statistiques par processus serveur peut être utilisé ; celle-ci sont montrées dans Tableau 27.37. Ces fonctions d'accès utilisent un numéro d'identifiant du processus serveur de la session, qui est un très petit entier positive (>= 0) distinct de l'identifiant du processus backend de toute session concurrente, bien qu'un identifiant de session peut être recyclé dès qu'il n'est plus utilisé. L'identifiant de processus backend est utilisé, entre autres choses, pour identifier le schéma temporaire de la session s'il en a un. La fonction pg_stat_get_backend_idset fournit une manière pratique de lister tous les numéros d'identifiant des processus serveurs actifs pour appeler ces fonctions. Par exemple, pour montrer les PID et requêtes en cours de tous les processus serveur :

SELECT pg_stat_get_backend_pid(backendid) AS pid,
       pg_stat_get_backend_activity(backendid) AS query
FROM pg_stat_get_backend_idset() AS backendid;
    

Tableau 27.37. Fonctions statistiques par processus serveur

Fonction

Description

pg_stat_get_backend_activity ( integer ) → text

Texte de la requête la plus récente de ce processus serveur

pg_stat_get_backend_activity_start ( integer ) → timestamp with time zone

Heure à laquelle la requête la plus récente a été démarrée

pg_stat_get_backend_client_addr ( integer ) → inet

Adresse IP du client connecté à ce processus serveur

pg_stat_get_backend_client_port ( integer ) → integer

Numéro de port TCP que le client utilise pour communiquer

pg_stat_get_backend_dbid ( integer ) → oid

OID de la base de données auquel ce processus serveur est connecté

pg_stat_get_backend_idset () → setof integer

Ensemble de numéros de processus serveur actuellement actifs

pg_stat_get_backend_pid ( integer ) → integer

Identifiant du processus serveur

pg_stat_get_backend_start ( integer ) → timestamp with time zone

Heure à laquelle ce processus a été démarré

pg_stat_get_backend_subxact ( integer ) → record

Renvoie un enregistrement d'informations sur le backend ayant cet identifiant. Les champs renvoyés sont subxact_count, qui est le nombre de sous-transactions dans le cache de sous-transactions du processus backend, et subxact_overflow, qui indique si le cache de sous-transaction du processus backend est rempli ou non.

pg_stat_get_backend_userid ( integer ) → oid

Renvoie l'OID de l'utilisateur connecté à ce processus serveur

pg_stat_get_backend_wait_event ( integer ) → text

Renvoie le nom de l'événement d'attente si le processus est actuellement en attente, NULL sinon. Voir Tableau 27.4 pour les détails.

pg_stat_get_backend_wait_event_type ( integer ) → text

Renvoie le nom du type d'événement d'attente si le processus est actuellement en attente, NULL sinon. Voir Tableau 27.4 pour les détails.

pg_stat_get_backend_xact_start ( integer ) → timestamp with time zone

Heure à laquelle la transaction courante a été démarrée