CREATE TABLESPACE
Эта страница переведена при помощи нейросети GigaChat.
CREATE TABLESPACE
- создание нового табличного пространства.
Синтаксис
CREATE TABLESPACE tablespace_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
, чтобы файлы данных для этих объектов сохранялись в заданном табличном пространстве.
Табличное пространство не может использоваться независимо от кластера, в котором оно определено. Подробнее описано в разделе Управление базами данных.
Параметры
tablespace_name
- Имя табличного пространства, которое должно быть создано. Имя не может начинаться с
pg_
, так как такие имена зарезервированы для системных табличных пространств.
user_name
- Имя пользователя, который будет владельцем табличного пространства. Если не указано, по умолчанию используется пользователь, выполняющий команду. Только суперпользователи могут создавать табличные пространства, но они могут назначать владельцем других пользователей, не являющихся суперпользователями.
directory
- Каталог, который будет использоваться для табличного пространства. Каталог должен существовать (команда
CREATE TABLESPACE
не создает его), должен быть пустым и принадлежать системному пользователю PostgreSQL. Путь к каталогу должен быть абсолютным.
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
Команда создания табличного пространства внутри PostgreSQL:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
Создание табличного пространства, принадлежащее другому пользователю базы данных:
CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';
Совместимость
CREATE TABLESPACE
является расширением PostgreSQL.
Смотрите также
CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE