Le module pgstattuple fournit plusieurs fonctions pour obtenir des statistiques au niveau ligne.
pgstattuple renvoie la longueur physique d'une relation, le pourcentage des lignes « mortes », et d'autres informations. Ceci peut aider les utilisateurs à déterminer si une opération de VACUUM est nécessaire. L'argument est le nom de la relation cible (qui peut être qualifié par le nom du schéma). Par exemple :
test=> SELECT * FROM pgstattuple('pg_catalog.pg_proc');
-[ RECORD 1 ]------+-------
table_len          | 458752
tuple_count        | 1470
tuple_len          | 438896
tuple_percent      | 95.67
dead_tuple_count   | 11
dead_tuple_len     | 3157
dead_tuple_percent | 0.69
free_space         | 8932
free_percent       | 1.95
     
              Les colonnes en sortie sont décrites dans Tableau F.21, « Colonnes de pgstattuple ».
Tableau F.21. Colonnes de pgstattuple
| Colonne | Type | Description | 
|---|---|---|
| table_len | bigint | Longueur physique de la relation en octets | 
| tuple_count | bigint | Nombre de lignes vivantes | 
| tuple_len | bigint | Longueur totale des lignes vivantes en octets | 
| tuple_percent | float8 | Pourcentage des lignes vivantes | 
| dead_tuple_count | bigint | Nombre de lignes mortes | 
| dead_tuple_len | bigint | Longueur totale des lignes mortes en octets | 
| dead_tuple_percent | float8 | Pourcentage des lignes mortes | 
| free_space | bigint | Espace libre total en octets | 
| free_percent | float8 | Pourcentage de l'espace libre | 
pgstattuple acquiert seulement un verrou en lecture sur la relation. Donc les relations ne reflètent pas une image instantanée des mises à jour en parallèle peuvent les affecter.
pgstattuple juge qu'une ligne est « morte » si HeapTupleSatisfiesNow renvoie false.
Identique à pgstattuple(text), sauf que la relation cible est désignée par son OID.
pgstatindex renvoie un enregistrement affichant des informations sur un index B-Tree. Par exemple :
test=> SELECT * FROM pgstatindex('pg_cast_oid_index');
-[ RECORD 1 ]------+------
version            | 2
tree_level         | 0
index_size         | 8192
root_block_no      | 1
internal_pages     | 0
leaf_pages         | 1
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 50.27
leaf_fragmentation | 0
    
              En voici les colonnes:
| Colonne | Type | Description | 
|---|---|---|
| version | integer | Numéro de version du B-tree | 
| tree_level | integer | Niveau de l'arbre pour la page racine | 
| index_size | bigint | Nombre total de page dans l'index | 
| root_block_no | bigint | Enmplacement du bloc racine | 
| internal_pages | bigint | Nombre de pages « internes » (niveau supérieur) | 
| leaf_pages | bigint | Nombre de pages feuilles | 
| empty_pages | bigint | Nombre de pages vides | 
| deleted_pages | bigint | Nombre de pages supprimées | 
| avg_leaf_density | float8 | Densité moyenne des pages feuilles | 
| leaf_fragmentation | float8 | Fragmentation des pages feuilles | 
Comme pour pgstattuple, les résultats sont accumulés page par page, et ne représentent pas forcément une image instantannée de l'index complet.
pg_relpages renvoie le nombre de pages dans la relation.
Tatsuo Ishii et Satoshi Nagayasu