PostgreSQL - Как определить к каким файлам на диске соответствуют таблицы в базе данных

PostgreSQL - Как определить к каким файлам на диске соответствуют таблицы в базе данных

Коллеги всем привет.

В сегодняшней статье мы поговорим о том как можно найти конкретный файл в директории где у вас установлена ваша базы данных, который относится к одной из таблиц в базе данных PostgreSQL.

Иногда в работе специалиста администратора баз данных необходимо определять к какому файлу на диске соответствует таблица в базе данных. По умолчанию все таблицы базы данных хранятся по пути  $PGDATA/base.

 

Задача определить имя файла по названию таблицы может возникнуть во многих случаях, один из таких случаев может быть то что вы можете у себя в лог файле увидеть такую ошибку:

ERROR:  could not read block 22342 of relation base/16384/16388: read only 0 of 8192 bytes

 

Чтобы решить данную задачу и найти отношения между таблицей в базе данных и файлом на вашем сервере мы можем воспользоваться специальной функцией которая поставляется вместе c СУБД PostgreSQL. Функция называется pg_relation_filepath. Функция pg_relation_filepath принимает один параметр, это имя таблицы которая существует в базе данных. В случаи успеха функция вернут относительный путь к файлу.

Прежде чем использовать функцию, нам нужно подключиться к конкретной базу данные, а уже потом использовать функцию.

psql> SELECT pg_relation_filepath('random_number');

postgresql_table_file_path

postgresql_table_file_path

В результате мы получили все файлы которые относятся к таблице random_number.


 

Вдруг если вы хотите наоборот узнать имя таблицы по имени файлу то существует другая функция которая называется pg_filenode_relation. Функция pg_filenode_relation принимает два параметра, первый это табличное пространство, а вторым параметром это имя файла.

psql> SELECT pg_filenode_relation(0,16388);

postgresql_table_file_path


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

 

ПОХОЖИЕ СТАТЬИ

PostgreSQL - Как узнать размер таблиц в базе данных
PostgreSQL - Как узнать размер таблиц в базе данных
POSTGRESQL
Читать далее
PostgreSQL - Как проверить привилегии пользователя
PostgreSQL - Как проверить привилегии пользователя
POSTGRESQL
Читать далее
PostgreSQL - Как включить архивирование WAL журналов - archive_mode
PostgreSQL - Как включить архивирование WAL журналов - archive_mode
POSTGRESQL
Читать далее