CREATE TABLESPACE

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


Синтаксис

CREATE TABLESPACE имя_табличного_пространства
    [ OWNER { новый_владелец | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
    LOCATION 'каталог'
    [ WITH ( параметр_табличного_пространства = значение [, ... ] ) ]

Описание

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

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

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

ВНИМАНИЕ!
Табличное пространство не может использоваться независимо от кластера, в котором оно определено; см. раздел Табличные пространства.


Параметры

имя_табличного_пространства

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

имя_пользователя

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

каталог

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

параметр_табличного_пространства

Параметр табличного пространства, который необходимо установить или сбросить. В настоящее время доступны только следующие параметры: 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 в расположении файловой системы /opt/qhb/data/dbs, сначала создайте каталог с помощью средств операционной системы и установите правильного владельца:

mkdir /opt/qhb/data/dbs
chown qhb:qhb /opt/qhb/data/dbs

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

CREATE TABLESPACE dbspace LOCATION '/opt/qhb/data/dbs';

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

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

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

Команда CREATE TABLESPACE является расширением QHB.


См. также

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