Как работает pg_tablespace_size? - PullRequest
0 голосов
/ 14 октября 2019

Я выполнил следующую команду и получил следующие, но немного убежден в манипулировании размером таблицы, потому что я не знаю, как работает pg_tablespace_size:

my_db=> select pg_size_pretty(pg_total_relation_size('my_table'));
 pg_size_pretty 
----------------
 123 GB
(1 row)

my_db=> select pg_size_pretty(pg_indexes_size('my_table'));
 pg_size_pretty 
----------------
 34 GB
(1 row)

my_db=> select pg_size_pretty(pg_relation_size('my_table'));
 pg_size_pretty 
----------------
 27 GB
(1 row)

rest_space = pg_total_relation_size ('my_table') -(pg_indexes_size ('my_table') + pg_relation_size ('my_table'))

Но я не знаю, где находится rest_space (62 ГБ), я был бы признателен, если кто-то объяснит это.

1 Ответ

1 голос
/ 14 октября 2019

pg_relation_size(<tablename>) на самом деле является сокращением для pg_relation_size(<tablename>,’main’) (см. Документацию ). Есть также карта свободного пространства (fsm), карта видимости (vm) и init-форки, которые учитывают фактор в полном размере.

Я думаю, вы бы получили правильные результаты, если бы сделали pg_total_relation_size() = pg_table_size() + pg_indexes_size()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...