PostgreSQL - Як визначити, до яких файлів на диску відповідають таблиці в базі даних

  • Останнє оновлення: 3 Листопада 2023 р.
  • Перегляди: 144
  • Автор: Адмін
PostgreSQL - Як визначити, до яких файлів на диску відповідають таблиці в базі даних

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

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

Іноді в роботі спеціаліста адміністратора баз даних необхідно визначати, до якого файлу на диску відповідає таблиця в базі даних. За замовчуванням усі таблиці бази даних зберігаються шляхом  $PGDATA/base.

 

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

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

 

Щоб вирішити це завдання і знайти відносини між таблицею в базі даних і файлом на вашому сервері ми можемо скористатися спеціальною функцією, яка постачається разом з СУБД 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 - pg_dump створення резервної копії зі стисненням bzip2

PostgreSQL - pg_dump створення резервної копії зі стисненням bzip2

PostgreSQL - як скинути пароль postgres

PostgreSQL - як скинути пароль postgres

Завантажити та встановити Postgresql 14 на Linux CentOS/RHEL 8/7 TAR

Завантажити та встановити Postgresql 14 на Linux CentOS/RHEL 8/7 TAR