PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle est la différence entre pg_table_size, pg_relation_size &pg_total_relation_size ? (PostgreSQL)

Pour une table aléatoire :

# select pg_relation_size(20306, 'main') as main,
  pg_relation_size(20306, 'fsm') as fsm,
  pg_relation_size(20306, 'vm') as vm,
  pg_relation_size(20306, 'init') as init,
  pg_table_size(20306), pg_indexes_size(20306) as indexes,
  pg_total_relation_size(20306) as total;
  main  |  fsm  |  vm  | init | pg_table_size | indexes |  total 
--------+-------+------+------+---------------+---------+--------
 253952 | 24576 | 8192 |    0 |        286720 |  196608 | 483328
(1 row)

À partir de là, vous pouvez dire pg_table_size est la somme de toutes les valeurs de retour de pg_relation_size . Et pg_total_relation_size est la somme de pg_table_size et pg_indexes_size .

Si vous voulez savoir combien d'espace vos tables utilisent, utilisez pg_table_size et pg_total_relation_size pour y penser - un nombre est un tableau uniquement et un nombre est un tableau + index.

Vérifiez la disposition du fichier de stockage pour obtenir des informations sur ce que fsm , vm , et init signifie, et comment ils sont stockés sur le disque.