Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

CREATE TABLESPACE

Синтаксис

CREATE TABLESPACE <tablespace_name>
    [OWNER <user_name>]
    LOCATION '<directory>'
    [WITH (content<ID_1>='<directory_1>'[, content<ID_2>='<directory_2>' ... ] [, <tablespace_option> = <value> [, ... ] ])]

Описание

CREATE TABLESPACE регистрирует и настраивает новое табличное пространство в системе Greengage DB. Имя табличного пространства должно отличаться от имени любого существующего табличного пространства в системе. Табличное пространство — это системный объект Greengage DB (глобальный объект); вы можете использовать табличное пространство из любой базы данных при наличии соответствующих привилегий.

Табличное пространство позволяет суперпользователям определить альтернативное расположение в файловой системе хоста для хранения файлов данных, содержащих объекты базы данных (такие как таблицы и индексы).

Пользователь с соответствующими привилегиями может передать имя табличного пространства в команды CREATE DATABASE, CREATE TABLE или CREATE INDEX, чтобы файлы данных этих объектов хранились в указанном табличном пространстве.

В Greengage DB указанный путь в файловой системе должен существовать на всех хостах, включая хосты, на которых работают мастер, резервный мастер, каждый основной сегмент и каждый зеркальный сегмент.

Параметры

Параметр Описание

tablespace_name

Имя создаваемого табличного пространства. Имя не может начинаться с pg_ или gp_, так как такие имена зарезервированы для системных табличных пространств

user_name

Имя пользователя, который будет владельцем табличного пространства. Если параметр не указан, по умолчанию используется пользователь, выполняющий команду. Только суперпользователи могут создавать табличные пространства, но они могут назначать владение табличными пространствами обычным пользователям

LOCATION '<directory>'

Абсолютный путь к каталогу (расположению в файловой системе хоста), который будет корневым каталогом табличного пространства. При регистрации табличного пространства каталог должен быть пустым и принадлежать системному пользователю Greengage DB. Каталог должен быть указан абсолютным путем длиной не более 100 символов. Это расположение используется для создания целевой символической ссылки в каталоге pg_tblspc; целевые символические ссылки усекаются до 100 символов при передаче в tar из утилит, таких как pg_basebackup.

Для каждого экземпляра сегмента можно указать отдельный каталог табличного пространства в выражении WITH

content<ID_i>='<directory_i>'

Значение ID_i — это идентификатор контента (content ID) экземпляра сегмента. directory_i — абсолютный путь к расположению в файловой системе хоста, которое экземпляр сегмента использует в качестве корневого каталога табличного пространства. Нельзя указывать идентификатор контента экземпляра мастера (-1). Для нескольких сегментов можно указать один и тот же каталог.

Если экземпляр сегмента не указан в выражении WITH, Greengage DB использует каталог табличного пространства, заданный в выражении LOCATION.

Ограничения, указанные для каталога LOCATION, также распространяются на directory_i

tablespace_option

Параметр табличного пространства для установки или сброса. В настоящее время доступны только параметры seq_page_cost и random_page_cost. Установка любого из этих значений для конкретного табличного пространства переопределяет обычную оценку планировщика стоимости чтения страниц из таблиц в этом табличном пространстве, определяемую одноименными параметрами конфигурации. Это может быть полезно, если табличное пространство расположено на диске, который быстрее или медленнее остальной подсистемы ввода-вывода

Примечания

Поскольку CREATE TABLESPACE создает символические ссылки из каталога pg_tblspc в каталоге данных мастера и экземпляров сегментов на каталоги, указанные в команде, Greengage DB поддерживает табличные пространства только в системах, поддерживающих символические ссылки.

CREATE TABLESPACE не может выполняться внутри блока транзакций.

При создании табличных пространств убедитесь, что расположения в файловой системе обладают достаточной скоростью ввода-вывода и доступным дисковым пространством.

Системная таблица каталога pg_tablespace хранит информацию о табличных пространствах. Следующая команда отображает OID, имена и владельцев табличных пространств:

SELECT oid, spcname, spcowner FROM pg_tablespace;

Встроенная функция Greengage DB gp_tablespace_location(tablespace_oid) отображает расположения в файловой системе хоста для всех экземпляров сегментов. Следующая команда выводит идентификаторы баз данных сегментов и расположения в файловой системе для табличного пространства с OID 16385:

SELECT * FROM gp_tablespace_location(16385);
ПРИМЕЧАНИЕ

Greengage DB не поддерживает различные расположения табличного пространства для пары основной-зеркальный сегмент с одним и тем же идентификатором контента (content ID). Различные расположения можно настроить только для разных идентификаторов контента. Не изменяйте символические ссылки в каталоге pg_tblspc таким образом, чтобы пара основной-зеркальный сегмент указывала на разные расположения файлов; это приведет к ошибочному поведению.

Примеры

Создать новое табличное пространство и указать расположение в файловой системе для мастера и всех экземпляров сегментов:

CREATE TABLESPACE mytblspace LOCATION '/gpdbtspc/mytestspace';

Создать новое табличное пространство и указать расположение для экземпляров сегментов с идентификаторами контента 0 и 1. Для мастера и экземпляров сегментов, не указанных в выражении WITH, расположение в файловой системе задается в выражении LOCATION:

CREATE TABLESPACE mytblspace LOCATION '/gpdbtspc/mytestspace'
    WITH (content0='/temp/mytest', content1='/temp/mytest');

В этом примере для двух экземпляров сегментов указано одинаковое расположение. Для каждого сегмента можно указать отдельное расположение.

Совместимость

CREATE TABLESPACE является расширением Greengage DB.

См. также