sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuál es la diferencia entre pg_table_size, pg_relation_size y pg_total_relation_size? (PostgreSQL)

Para una mesa aleatoria:

# 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)

A partir de eso, puedes decir pg_table_size es la suma de todos los valores de retorno de pg_relation_size . Y pg_total_relation_size es la suma de pg_table_size y pg_indexes_size .

Si desea saber cuánto espacio ocupan sus tablas, utilice pg_table_size y pg_total_relation_size para pensar en ellos:un número es solo tabla y un número es tabla + índices.

Consulte el diseño del archivo de almacenamiento para obtener información sobre qué fsm , vm y init decir, y cómo se almacenan en el disco.