Перейти к основному содержимому

CREATE TABLESPACE

примечание

Эта страница переведена при помощи нейросети GigaChat.

CREATE TABLESPACE - создание нового табличного пространства.

Синтаксис

CREATE TABLESPACE tablespace_name
[ OWNER { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
LOCATION 'directory'
[ WITH ( tablespace_option = value [, ... ] ) ]

Описание

CREATE TABLESPACE регистрирует новое табличное пространство на уровне всего кластера. Имя табличного пространства должно отличаться от имени любого существующего табличного пространства в кластере базы данных.

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

Пользователь с соответствующими привилегиями может указать tablespace_name в командах CREATE DATABASE, CREATE TABLE, CREATE INDEX или ADD CONSTRAINT, чтобы файлы данных для этих объектов сохранялись в заданном табличном пространстве.

Предупреждение

Табличное пространство не может использоваться независимо от кластера, в котором оно определено. Подробнее описано в разделе Управление базами данных.

Параметры

tablespace_name
Имя табличного пространства, которое должно быть создано. Имя не может начинаться с pg_, так как такие имена зарезервированы для системных табличных пространств.
user_name
Имя пользователя, который будет владельцем табличного пространства. Если не указано, по умолчанию используется пользователь, выполняющий команду. Только суперпользователи могут создавать табличные пространства, но они могут назначать владельцем других пользователей, не являющихся суперпользователями.
directory
Каталог, который будет использоваться для табличного пространства. Каталог должен существовать (команда CREATE TABLESPACE не создает его), должен быть пустым и принадлежать системному пользователю PostgreSQL. Путь к каталогу должен быть абсолютным.
tablespace_option
Параметр табличного пространства, который нужно установить или сбросить. В настоящее время доступны только следующие параметры: seq_page_cost, random_page_cost, effective_io_concurrency и maintenance_io_concurrency. Установка этих параметров для конкретного табличного пространства переопределяет обычные оценки планировщика по стоимости чтения страниц из таблиц в этом пространстве, а также поведение исполнителя по предварительной выборке, заданное одноименными конфигурационными параметрами (смотрите описания параметров seq_page_cost, random_page_cost, effective_io_concurrency, maintenance_io_concurrency). Это может быть полезно, если табличное пространство расположено на более быстром или медленном диске по сравнению с остальной частью подсистемы ввода-вывода.

Примечания

CREATE TABLESPACE не может быть выполнен внутри блока транзакции.

Примеры

Создание табличного пространства dbspace в файловой системе /data/dbs. Сначала создается каталог с помощью средств операционной системы и устанавливается правильное владение:

mkdir /data/dbs
chown postgres:postgres /data/dbs

Команда создания табличного пространства внутри PostgreSQL:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

Создание табличного пространства, принадлежащее другому пользователю базы данных:

CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

Совместимость

CREATE TABLESPACE является расширением PostgreSQL.

Смотрите также

CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE