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.
pgstatginindex renvoie un enregistrement montrant les informations sur un index GIN. Par exemple :
test=> SELECT * FROM pgstatginindex('test_gin_index'); -[ RECORD 1 ]--+-- version | 1 pending_pages | 0 pending_tuples | 0
Les colonnes en sortie sont :
Colonne | Type | Description |
---|---|---|
version | integer | Numéro de version GIN |
pending_pages | integer | Nombre de pages dans la liste en attente |
pending_tuples | bigint | Nombre de lignes dans la liste en attente |
pg_relpages renvoie le nombre de pages dans la relation.
Tatsuo Ishii et Satoshi Nagayasu