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