Подтвердить что ты не робот

Postgres db files - какой файл представляет конкретную таблицу/индекс?

когда я перехожу в sql-8.2/base/, чтобы проверить, сколько места занимает моя таблица, есть много файлов, названных рядом. как я могу найти конкретный файл, который хранит мою конкретную таблицу и индекс для этой таблицы?

Например,

я заказал файлы по дате (сначала самые новые), но в тот конкретный период несколько:

-rw-------  1 postgres sql  1.0G Dec  4 13:41 15426233
-rw-------  1 postgres sql  149M Dec  4 13:41 15426233.4
-rw-------  1 postgres sql  1.0G Dec  4 13:41 15426233.3
drwx------  3 postgres sql   75K Dec  4 13:40 .
-rw-------  1 postgres sql  1.0G Dec  4 13:34 15426233.2
-rw-------  1 postgres sql  1.0G Dec  4 13:28 15426233.1
-rw-------  1 postgres sql  3.6M Dec  4 11:23 1249
-rw-------  1 postgres sql  584K Dec  4 11:23 2659
-rw-------  1 postgres sql  672K Dec  4 11:23 2663
-rw-------  1 postgres sql  136K Dec  4 11:23 2662
-rw-------  1 postgres sql  848K Dec  4 11:23 2608
-rw-------  1 postgres sql  2.6M Dec  4 11:23 2658
-rw-------  1 postgres sql  600K Dec  4 11:23 2674
-rw-------  1 postgres sql   56K Dec  4 11:23 2679
-rw-------  1 postgres sql  632K Dec  4 11:23 2673
-rw-------  1 postgres sql   72K Dec  4 11:23 2678
-rw-------  1 postgres sql  1.8M Dec  4 11:22 2619
-rw-------  1 postgres sql  112K Dec  4 11:21 2696
-rw-------  1 postgres sql 1007M Dec  4 11:21 15426228.5
-rw-------  1 postgres sql  1.0G Dec  4 11:19 15426228.4
-rw-------  1 postgres sql  1.0G Dec  4 11:19 15426228.3
-rw-------  1 postgres sql  1.0G Dec  4 11:18 15426228.2
-rw-------  1 postgres sql  1.0G Dec  4 11:17 15426228.1
-rw-------  1 postgres sql  1.0G Dec  4 11:16 15426228
4b9b3361

Ответ 1

Каждый каталог представляет собой базу данных (созданную через create database). Номер является базой данных базы данных. Чтобы просмотреть имя и его имя, запустите следующую инструкцию:

select oid, datname
from pg_database;

В каждом каталоге каждый файл соответствует записи в pg_class, где oid соответствует номеру файла в каталоге:

Вы можете видеть oids и к каким отношениям они связаны, запустив инструкцию:

select cl.relfilenode, nsp.nspname as schema_name, cl.relname, cl.relkind
from pg_class cl
  join pg_namespace nsp on cl.relnamespace = nsp.oid;

Вы также можете проверить руководство

Btw: если вы действительно все еще работаете 8.2, вы должны обновить его как можно скорее.

Ответ 3

Чтобы проверить, сколько места занимает таблица:

SELECT pg_size_pretty(pg_total_relation_size('table_name_here'))

Он даст вам размер таблицы со своими индексами и таблицами "тостов". Подробности здесь.