CREATE TABLESPACE#
CREATE TABLESPACE
CREATE TABLESPACE — определить новое табличнoe пространствo
Синтаксис
CREATE TABLESPACEtablespace_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
, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.
Предупреждение
Табличное пространство не может использоваться независимо от кластера, в котором оно определено; см. Раздел 21.6.
Параметры
tablespace_name
Имя создаваемого табличного пространства. Имя не может начинаться с
pg_
, так как такие имена зарезервированы для системных табличных пространств.user_name
Имя пользователя, который будет владеть табличным пространством. Если не указано, по умолчанию используется имя пользователя, выполняющего команду. Только суперпользователи могут создавать табличные пространства, но они могут назначать владельцев табличных пространств несуперпользователям.
directory
Каталог, который будет использоваться для табличного пространства. Каталог должен существовать (
CREATE TABLESPACE
не создаст ее), должна быть пустой и должна принадлежать пользователю системы Tantor BE. Необходимо указать абсолютный пусть к каталогу.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 BE:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
Для создания табличного пространства, принадлежащего другому пользователю базы данных, используйте команду вида:
CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';
Совместимость
CREATE TABLESPACE
- это расширение Tantor BE.