CREATE TABLESPACE
CREATE TABLESPACE — создать табличное пространство
Синтаксис
CREATE TABLESPACEтабл_пространство
[ OWNER {новый_владелец
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'directory
' [ WITH (параметр_табличного_пространства
=значение
[, ... ] ) ]
Описание
CREATE TABLESPACE
регистрирует новое табличное пространство на уровне кластера баз данных. Имя табличного пространства должно отличаться от имён уже существующих табличных пространств в кластере.
Табличные пространства позволяют администраторам баз данных определять альтернативные расположения в файловой системе, где могут находиться файлы, содержащие объекты базы данных (например, таблицы или индексы). Создавать табличные пространства могут только суперпользователи и пользователи с правами роли pg_create_tablespace
, но их владельцами могут быть назначены и обычные пользователи.
Пользователь, имеющий соответствующие права, может передать параметр табл_пространство
команде CREATE DATABASE
, CREATE TABLE
, CREATE INDEX
или ADD CONSTRAINT
, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.
Предупреждение
Табличное пространство нельзя использовать отдельно от кластера, в котором оно было определено; см. Раздел 22.6.
Параметры
табл_пространство
Имя создаваемого табличного пространства. Это имя не может начинаться с
pg_
, так как такие имена зарезервированы для системных табличных пространств.имя_пользователя
Имя пользователя, который будет владельцем табличного пространства. Если опущено, владельцем по умолчанию станет пользователь, выполняющий команду.
directory
Каталог, который будет использован для этого табличного пространства. Этот каталог должен уже существовать (
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). Это может быть полезно, если одно из табличных пространств размещено на диске, который быстрее или медленнее остальной дисковой системы. Сжатие рассматривается в Главе 32.
Примечания
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.