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

F.24. pgstattuple

Le module pgstattuple fournit plusieurs fonctions pour obtenir des statistiques au niveau ligne.

F.24.1. Fonctions

pgstattuple(text) returns record

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
     

Voici les colonnes disponibles :

Tableau F.27. 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.

pgstattuple(oid) returns record

Identique à pgstattuple(text), sauf que la relation cible est désignée par son OID.

pgstatindex(text) returns record

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:

Tableau F.28. Colonnes de pgstatindex

Colonne Type Description
version integer Numéro de version du Btree
tree_level integer Niveau de l'arbre pour la page racine
index_size integer Nombre total de page dans l'index
root_block_no integer Enmplacement du bloc racine
internal_pages integer Nombre de pages « internes » (niveau supérieur)
leaf_pages integer Nombre de pages feuilles
empty_pages integer Nombre de pages vides
deleted_pages integer 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(text) returns integer

pg_relpages renvoie le nombre de pages dans la relation.

F.24.2. Auteur

Tatsuo Ishii