CREATE TABLESPACE
CREATE TABLESPACE — создать табличное пространство
Синтаксис
Только для глобальных табличных пространств: CREATE TABLESPACEтабл_пространство
[ OWNER {новый_владелец
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'template
' [ WITH (global = true
=параметр_табличного_пространства
=значение
[, ... ] ) ]
Описание
Обратите внимание, что Postgres Pro Shardman поддерживает только глобальные табличные пространства.
Расширение синтаксиса команды CREATE TABLESPACE
в Postgres Pro Shardman позволяет создавать новое табличное пространство на уровне кластера. Все табличные пространства в кластере Shardman должны создаваться на уровне кластера. Табличное пространство на уровне кластера создаётся на каждом узле с расположением, полученным из параметра шаблон
.
Табличные пространства позволяют администраторам баз данных определять альтернативные расположения в файловой системе, где могут находиться файлы, содержащие объекты базы данных (например, таблицы или индексы). Создавать табличные пространства могут только суперпользователи и пользователи с правами роли pg_create_tablespace
, но их владельцами могут быть назначены и обычные пользователи.
Пользователь, имеющий соответствующие права, может передать параметр табл_пространство
команде CREATE DATABASE
, CREATE TABLE
, CREATE INDEX
или ADD CONSTRAINT
, чтобы файлы данных для этих объектов хранились в указанном табличном пространстве.
Предупреждение
Табличное пространство нельзя использовать отдельно от кластера, в котором оно было определено; см. Раздел 22.7.
Параметры
табл_пространство
Имя создаваемого табличного пространства. Это имя не может начинаться с
pg_
, так как такие имена зарезервированы для системных табличных пространств.имя_пользователя
Имя пользователя, который будет владельцем табличного пространства. Если опущено, владельцем по умолчанию станет пользователь, выполняющий команду.
directory
Каталог, который будет использован для этого табличного пространства. Этот каталог должен уже существовать (
CREATE TABLESPACE
не создаст его), быть пустым и принадлежать системному пользователю Postgres Pro. Задаваться его расположение должно абсолютным путём.global = true
Указывает, что создаваемое табличное пространство должно быть глобальным.
параметр_табличного_пространства
Устанавливаемый или сбрасываемый параметр табличного пространства. В настоящее время поддерживаются только параметры
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
, сначала создайте этот каталог средствами операционной системы на всех узлах и установите для него подходящего владельца (или проверьте, что у пользователя postgres
есть право его создать):
mkdir /data/dbs chown postgres:postgres /data/dbs
Затем выполните команду, собственно создающую табличное пространство:
CREATE TABLESPACE dbspace LOCATION '/data/dbs/ts-{rgid}' WITH (global = true);
Совместимость
CREATE TABLESPACE
является расширением Postgres Pro.