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