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
, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.
Предупреждение
Табличное пространство нельзя использовать отдельно от кластера, в котором оно было определено; см. Раздел 22.6.
Параметры
табл_пространство
Имя создаваемого табличного пространства. Это имя не может начинаться с
pg_
, так как такие имена зарезервированы для системных табличных пространств.имя_пользователя
Имя пользователя, который будет владельцем табличного пространства. Если опущено, владельцем по умолчанию станет пользователь, выполняющий команду. Создавать табличные пространства могут только суперпользователи, но их владельцами могут быть назначены и обычные пользователи.
каталог
Каталог, который будет использован для этого табличного пространства. Этот каталог должен уже существовать (
CREATE TABLESPACE
не создаст его), быть пустым и принадлежать системному пользователю Postgres Pro. Задаваться его расположение должно абсолютным путём.параметр_табличного_пространства
Устанавливаемый или сбрасываемый параметр табличного пространства. В настоящее время поддерживаются только параметры
seq_page_cost
,random_page_cost
,effective_io_concurrency
,maintenance_io_concurrency
иcompression
. При установке параметров стоимости для заданного табличного пространства будет переопределена обычная оценка стоимости чтения страниц из таблиц в этом пространстве и характеристики предвыборки во время выполнения, зависящие от одноимённых параметров конфигурации (см. seq_page_cost, random_page_cost, effective_io_concurrency, maintenance_io_concurrency). Это может быть полезно, если одно из табличных пространств размещено на диске, который быстрее или медленнее остальной дисковой системы. Сжатие рассматривается в Главе 33.
Примечания
Табличные пространства поддерживаются только на платформах, поддерживающих символические ссылки.
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.