|
1 | 1 | This utility allows administrators to examine the file structure used by |
2 | | -PostgreSQL. |
3 | | - |
4 | | -Databases are placed in directories named after their OIDs in pg_database, |
5 | | -and the table files within a database's directory are named by "filenode" |
6 | | -numbers, which are stored in pg_class.relfilenode. |
7 | | - |
8 | | -Note that while a table's filenode often matches its OID, this is *not* |
9 | | -necessarily the case; some operations, like TRUNCATE, REINDEX, CLUSTER |
10 | | -and some forms of ALTER TABLE, can change the filenode while preserving |
11 | | -the OID. Avoid assuming that filenode and table OID are the same. |
12 | | - |
13 | | -When a table exceeds 1Gb, it is divided into gigabyte-sized "segments". |
14 | | -The first segment's file name is the same as the filenode; subsequent |
15 | | -segments are named filenode.1, filenode.2, etc. |
16 | | - |
17 | | -Tablespaces make the scenario more complicated. Each non-default |
18 | | -tablespace has a symlink inside the pg_tblspc directory, which points to |
19 | | -the physical tablespace directory (as specified in its CREATE TABLESPACE |
20 | | -command). The symlink is named after the tablespace's OID. Inside the |
21 | | -physical tablespace directory there is another directory for each database |
22 | | -that has elements in the tablespace, named after the database's OID. |
23 | | -Tables within that directory follow the filenode naming scheme. The |
24 | | -"pg_default" tablespace is not addressed via pg_tblspc, but corresponds to |
25 | | -$PGDATA/base. |
| 2 | +PostgreSQL. To make use of it, you need to be familiar with the file |
| 3 | +structure, which is described in the "Database File Layout" chapter of |
| 4 | +the "Internals" section of the PostgreSQL documentation. |
26 | 5 |
|
27 | 6 | Oid2name connects to the database and extracts OID, filenode, and table |
28 | 7 | name information. You can also have it show database OIDs and tablespace |
|