Табличные пространства и размер данных

Создаем базу данных:

=> CREATE DATABASE data_physical;
CREATE DATABASE
=> \c data_physical
You are now connected to database "data_physical" as user "student".

Табличное пространство:

postgres$ mkdir /var/lib/postgresql/ts_dir
=> CREATE TABLESPACE ts LOCATION '/var/lib/postgresql/ts_dir';
CREATE TABLESPACE

Создаем таблицу:

=> CREATE TABLE t(n integer) TABLESPACE ts;
CREATE TABLE
=> INSERT INTO t SELECT 1 FROM generate_series(1,1000);
INSERT 0 1000

Объем базы данных:

=> SELECT pg_size_pretty(pg_database_size('data_physical')) AS db_size;
 db_size 
---------
 6885 kB
(1 row)

Размер таблицы:

=> SELECT pg_size_pretty(pg_total_relation_size('t')) AS t_size;
 t_size 
--------
 56 kB
(1 row)

Объем табличных пространств:

=> SELECT pg_size_pretty(pg_tablespace_size('pg_default')) AS pg_default_size,
pg_size_pretty(pg_tablespace_size('ts')) AS ts_size;
 pg_default_size | ts_size 
-----------------+---------
 440 MB          | 60 kB
(1 row)

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

Перенесем таблицу:

=> ALTER TABLE t SET TABLESPACE pg_default;
ALTER TABLE

Новый объем табличных пространств:

=> SELECT pg_size_pretty(pg_tablespace_size('pg_default')) AS pg_default_size,
pg_size_pretty(pg_tablespace_size('ts')) AS ts_size;
 pg_default_size |  ts_size   
-----------------+------------
 440 MB          | 4096 bytes
(1 row)

Удаляем табличное пространство:

=> DROP TABLESPACE ts;
DROP TABLESPACE