Chapitre 23. Surveiller l'activit� de la base de donn�es

Table des mati�res
23.1. Outils Unix standard
23.2. Le r�cup�rateur de statistiques
23.2.1. Configuration de la r�cup�ration de statistiques
23.2.2. Visualiser les statistiques r�cup�r�es
23.3. Visualiser les verrous

Un administrateur de bases de donn�es se demande fr�quemment : <<�Que fait le syst�me en ce moment ?�>> Ce chapitre discute de la fa�on de le savoir.

Plusieurs outils sont disponibles pour surveiller l'activit� de la base de donn�es et pour analyser les performances. Une grande partie de ce chapitre concerne la description du r�cup�rateur de statistiques de PostgreSQL mais personne ne devrait n�gliger les programmes de surveillance Unix standards tels que ps, top, iostat et vmstat. De plus, une fois qu'une requ�te peu performante a �t� identifi�e, des investigations suppl�mentaires pourraient �tre n�cessaires en utilisant la commande EXPLAIN de PostgreSQL. La Section 13.1 discute de EXPLAIN et des autres m�thodes pour comprendre le comportement d'une seule requ�te.

23.1. Outils Unix standard

Sur la plupart des plateformes, PostgreSQL modifie son titre de commande report� par ps de fa�on � ce que les processus serveur individuels puissent �tre rapidement identifi�s. Voici un affichage d'exemple :

$ ps auxww | grep ^postgres
postgres   960  0.0  1.1  6104 1480 pts/1    SN   13:17   0:00 postmaster -i
postgres   963  0.0  1.1  7084 1472 pts/1    SN   13:17   0:00 postgres: stats buffer process   
postgres   965  0.0  1.1  6152 1512 pts/1    SN   13:17   0:00 postgres: stats collector process   
postgres   998  0.0  2.3  6532 2992 pts/1    SN   13:18   0:00 postgres: tgl runbogue 127.0.0.1 idle
postgres  1003  0.0  2.4  6532 3128 pts/1    SN   13:19   0:00 postgres: tgl regression [local] SELECT waiting
postgres  1016  0.1  2.4  6532 3080 pts/1    SN   13:19   0:00 postgres: tgl regression [local] idle in transaction

(L'appel appropri� de ps varie suivant les diff�rentes plateformes, de m�me que les d�tails affich�s. Cet exemple est tir� d'un syst�me Linux r�cent.) Le premier processus affich� ici est le postmaster, le processus serveur ma�tre. Les arguments affich�s pour cette commande sont les m�mes qu'� son lancement. Les deux processus suivant impl�mentent la r�cup�ration de statistiques qui sera d�crite en d�tail dans la section suivante (elles ne seront pas pr�sentes si vous avez configur� le syst�me pour qu'il ne lance pas le r�cup�rateur de statistiques). Chacun des autres processus est un processus serveur g�rant une connexion cliente. Tous ces processus restant initialisent l'affichage de la ligne de commande de la forme

postgres: utilisateur base_de_donn�es h�te activit�

L'utilisateur, la base de donn�es et les �l�ments de l'h�te de connexion restent identiques pendant toute la vie de connexion du client mais l'indicateur d'activit� change. L'activit� pourrait �tre idle (c'est-�-dire en attente d'une commande du client), idle in transaction (en attente du client � l'int�rieur d'un bloc de BEGIN/COMMIT) ou un nom de commande du type SELECT. De plus, waiting est attach� si le processus serveur est en attente d'un verrou d�tenu par un autre processus serveur. Dans l'exemple ci-dessus, nous pouvons supposer que le processus 1003 attend que le processus 1016 ait termin� sa transaction et, du coup, lib�re un verrou.

Astuce�: Solaris requiert une gestion particuli�re. Vous devez utiliser /usr/ucb/ps plut�t que /bin/ps. Vous devez aussi utiliser deux options w et non pas seulement une. En plus, votre appel original de la commande postmaster doit avoir un affichage de statut dans ps plus petit que celui fourni par les autres processus serveur. Si vous �chouez dans les trois, l'affichage de ps pour chaque processus serveur sera la ligne de commande originale de postmaster.