PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Qual é a diferença entre pg_table_size, pg_relation_size e pg_total_relation_size? (PostgreSQL)


Para uma tabela aleatória:
# 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 disso, você pode dizer a pg_table_size é a soma de todos os valores de retorno de pg_relation_size . E pg_total_relation_size é a soma de pg_table_size e pg_indexes_size .

Se você quiser saber quanto espaço suas tabelas estão usando, use pg_table_size e pg_total_relation_size para pensar sobre eles - um número é somente tabela e um número é tabela + índices.

Verifique o layout do arquivo de armazenamento para obter algumas informações sobre o que fsm , vm e init quer dizer, e como eles são armazenados no disco.