CREATE TABLESPACE#

CREATE TABLESPACE

CREATE TABLESPACE

CREATE TABLESPACE — определить новое табличнoe пространствo

Синтаксис

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, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.

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

Табличное пространство не может использоваться независимо от кластера, в котором оно определено; см. Раздел 22.6.

Параметры

tablespace_name

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

user_name

Имя пользователя, который будет владеть табличным пространством. Если не указано, по умолчанию используется имя пользователя, выполняющего команду. Только суперпользователи могут создавать табличные пространства, но они могут назначать владельцев табличных пространств несуперпользователям.

directory

Каталог, который будет использоваться для табличного пространства. Каталог должен существовать (CREATE TABLESPACE не создаст ее), должна быть пустой и должна принадлежать пользователю системы Tantor SE. Необходимо указать абсолютный пусть к каталогу.

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

Затем выполните команду создания табличного пространства внутри Tantor SE:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

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

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

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

CREATE TABLESPACE - это расширение Tantor SE.