Определяет новое табличное пространство.
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
OWNER username
LOCATION '/path/to/dir'
contentID_i='/path/to/dir_i'
storage_degradation_parameter
Поддержка табличных пространств реализована только в системах, поддерживающих символические ссылки.
Команда 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.