PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Was ist der Unterschied zwischen pg_table_size, pg_relation_size und pg_total_relation_size? (PostgreSQL)

Für eine Zufallstabelle:

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

Daraus können Sie pg_table_size erkennen ist die Summe aller Rückgabewerte von pg_relation_size . Und pg_total_relation_size ist die Summe von pg_table_size und pg_indexes_size .

Wenn Sie wissen möchten, wie viel Platz Ihre Tabellen belegen, verwenden Sie pg_table_size und pg_total_relation_size um darüber nachzudenken -- eine Zahl ist nur Tabelle und eine Zahl ist Tabelle + Indizes.

Überprüfen Sie das Layout der Speicherdatei auf Informationen darüber, was fsm ist , vm , und init bedeuten und wie sie auf der Festplatte gespeichert werden.