diff --git a/doc/src/sgml/storage.sgml b/doc/src/sgml/storage.sgml index dd6f55ad637f79be7d93c160d5949f12b4aedd65..260df3de71ec3ccff9f9ee771cc1def2af417885 100644 --- a/doc/src/sgml/storage.sgml +++ b/doc/src/sgml/storage.sgml @@ -174,8 +174,6 @@ adjusted using the configuration option <option>--with-segsize</option> when building <productname>PostgreSQL</>.) In principle, free space map and visibility map forks could require multiple segments as well, though this is unlikely to happen in practice. -The contents of tables and indexes are discussed further in -<xref linkend="storage-page-layout">. </para> <para> @@ -187,15 +185,27 @@ its <acronym>TOAST</> table, if any. See <xref linkend="storage-toast"> for more information. </para> +<para> +The contents of tables and indexes are discussed further in +<xref linkend="storage-page-layout">. +</para> + <para> Tablespaces make the scenario more complicated. Each user-defined tablespace has a symbolic link inside the <varname>PGDATA</><filename>/pg_tblspc</> -directory, which points to the physical tablespace directory (as specified in -its <command>CREATE TABLESPACE</> command). The symbolic link is named after +directory, which points to the physical tablespace directory (i.e., the +location specified in the tablespace's <command>CREATE TABLESPACE</> command). +This symbolic link is named after the tablespace's OID. Inside the physical tablespace directory there is +a subdirectory with a name that depends on the <productname>PostgreSQL</> +server version, such as <literal>PG_9.0_201008051</>. (The reason for using +this subdirectory is so that successive versions of the database can use +the same <command>CREATE TABLESPACE</> location value without conflicts.) +Within the version-specific subdirectory, there is a subdirectory for each database that has elements in the tablespace, named -after the database's OID. Tables within that directory follow the filenode -naming scheme. The <literal>pg_default</> tablespace is not accessed through +after the database's OID. Tables and indexes are stored within that +directory, using the filenode naming scheme. +The <literal>pg_default</> tablespace is not accessed through <filename>pg_tblspc</>, but corresponds to <varname>PGDATA</><filename>/base</>. Similarly, the <literal>pg_global</> tablespace is not accessed through <filename>pg_tblspc</>, but corresponds to