CREATE TABLESPACE
CREATE TABLESPACE — создать табличное пространство
Синтаксис
CREATE TABLESPACEтабл_пространство[ OWNER {новый_владелец| CURRENT_USER | SESSION_USER } ] LOCATION 'каталог' [ WITH (параметр_табличного_пространства=значение[, ... ] ) ]
Описание
CREATE TABLESPACE регистрирует новое табличное пространство на уровне кластера баз данных. Имя табличного пространства должно отличаться от имён уже существующих табличных пространств в кластере.
Табличные пространства позволяют суперпользователям определять альтернативные расположения в файловой системе, где могут находиться файлы, содержащие объекты базы данных (например, таблицы или индексы).
Пользователь, имеющий соответствующие права, может передать параметр табл_пространство команде CREATE DATABASE, CREATE TABLE, CREATE INDEX или ADD CONSTRAINT, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.
Предупреждение
Табличное пространство нельзя использовать отдельно от кластера, в котором оно было определено; см. Раздел 22.6.
Параметры
табл_пространствоИмя создаваемого табличного пространства. Это имя не может начинаться с
pg_, так как такие имена зарезервированы для системных табличных пространств.имя_пользователяИмя пользователя, который будет владельцем табличного пространства. Если опущено, владельцем по умолчанию станет пользователь, выполняющий команду. Создавать табличные пространства могут только суперпользователи, но их владельцами могут быть назначены и обычные пользователи.
каталогКаталог, который будет использован для этого табличного пространства. Этот каталог должен быть пустым и должен принадлежать системному пользователю Postgres Pro. Задаваться его расположение должно абсолютным путём.
параметр_табличного_пространстваУстанавливаемый или сбрасываемый параметр табличного пространства. В настоящее время поддерживаются только параметры
seq_page_cost,random_page_cost,effective_io_concurrencyиcompression. При установке параметров стоимости для заданного табличного пространства будет переопределена обычная оценка стоимости чтения страниц из таблиц в этом пространстве, настраиваемая одноимённым параметром конфигурации (см. seq_page_cost, random_page_cost, effective_io_concurrency). Это может быть полезно, если одно из табличных пространств размещено на диске, который быстрее или медленнее остальной дисковой системы. Сжатие рассматривается в Главе 33.
Замечания
Табличные пространства поддерживаются только на платформах, поддерживающих символические ссылки.
CREATE TABLESPACE не может быть выполнена внутри блока транзакции.
Примеры
Создание табличного пространства dbspace в /data/dbs:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
Создание табличного пространства indexspace в /data/indexes и назначение его владельцем genevieve:
CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';
Совместимость
CREATE TABLESPACE является расширением Postgres Pro.