CREATE TABLESPACE

Определяет новое табличное пространство.

Синтаксис

CREATE TABLESPACE tablespace_name [OWNER username]  LOCATION '/path/to/dir' 
   [WITH (contentID_1='/path/to/dir1'[, contentID_2='/path/to/dir2' ... ], storage_degradation_parameter)]

Описание

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

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

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

В системе баз данных YMatrix пути в файловой системе должны существовать на всех хостах, включая хосты с процессами Master, Standby, каждый Primary и каждый Mirror.

Параметры

tablespacename

  • Имя создаваемого табличного пространства. Это имя не может начинаться с pg или gp, поскольку такие имена зарезервированы для системных табличных пространств.

OWNER username

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

LOCATION '/path/to/dir'

  • Абсолютный путь к каталогу (расположение в файловой системе хоста), который будет корневым каталогом табличного пространства, например: '/home/mxadmin/test'. При регистрации табличного пространства каталог должен быть пустым, и у администратора базы данных (mxadmin) должен быть к нему доступ. Этот каталог должен быть указан абсолютным путём.
    Для каждого экземпляра Segment можно указать другой каталог в предложении WITH.

contentID_i='/path/to/dir_i'

  • Значение ID_i — это идентификатор контента экземпляра Segment. /path/to/dir_i — абсолютный путь к расположению в файловой системе хоста экземпляра Segment, используемый как корень табличного пространства. Нельзя указывать идентификатор контента (-1) экземпляра Master. Можно указать один и тот же каталог для нескольких сегментов.
    Если экземпляр Segment не указан в предложении WITH, система баз данных YMatrix будет использовать каталог, указанный в предложении LOCATION.
    При регистрации табличного пространства каталог должен быть пустым и принадлежать пользователю системы баз данных YMatrix.

storage_degradation_parameter

  • Параметры, связанные с функцией пониженного хранения данных MARS3. Включают oss_accessid, oss_secretkey, oss_sessiontoken, oss_region, oss_endpoint, oss_bucket, oss_keyprefix, oss_cache_size. Эти параметры настраиваются только при создании табличного пространства.

Примечания

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

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

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

CREATE TABLESPACE создаёт символическую ссылку из каталога pg_tblspc в директории данных экземпляров Master и Segment в каталог, указанный в команде.

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

SELECT oid, spcname, spcowner FROM pg_tablespace ;

Встроенная функция базы данных YMatrix gp_tablespace_location(tablespace_oid) отображает расположение табличного пространства в файловой системе хоста для всех экземпляров Segment. Данная команда выводит идентификатор базы данных Segment и расположение в файловой системе хоста для табличного пространства с OID 16385.

SELECT * FROM gp_tablespace_location(16385) 


Ниже приведено описание параметров пониженного хранения:

Имя поля Единица измерения Значение по умолчанию Диапазон значений Описание
oss_accessid 0 ~ 2048 Ключ доступа
oss_secretkey 0 ~ 2048 Закрытый ключ доступа. По умолчанию это поле шифруется, и сохраняется шифротекст. Функцию шифрования можно отключить с помощью параметра mx_enable_oss_secretkey_encrypt
oss_sessiontoken 0 ~ 2048 Токен механизма STS. По умолчанию это поле шифруется, и сохраняется шифротекст. Функцию шифрования можно отключить с помощью параметра mx_enable_oss_sessiontoken_encrypt
oss_region cn-north-1 0 ~ 2048 Регион облачного сервиса объектов (в локальной среде заполнять не требуется)
oss_endpoint 0 ~ 2048 Адрес облачного сервиса объектов
oss_bucket 0 ~ 2048 Имя бакета объектов
oss_keyprefix 0 ~ 2048 Префикс бакета объектов. Префикс объекта аналогичен подкаталогу и должен заканчиваться на /
oss_cache_size МБ 2048 1 ~ INT_MAX Указывает максимальный объём файлового пространства, который может занимать кэш файлов при использовании объектного хранилища

Примеры

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

CREATE TABLESPACE mytblspace LOCATION '/gpdbtspc/mytestspace' ;

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

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

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

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

CREATE TABLESPACE tbs LOCATION '/temp/mytest'
WITH(
    oss_accessid='XYwJgHLTWGlk2KmP9Ruc',
    oss_secretkey='fk160295luHpQsq2DiaIYaTBAzNCkjgoIMr1OHIT',
    oss_endpoint='http://localhost:9000',
    oss_bucket='test'
);

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

CREATE TABLESPACE является расширением базы данных YMatrix.

Смотрите также

ALTER TABLESPACE, DROP TABLESPACE