CREATE TABLESPACE — define um novo espaço de tabelas
CREATE TABLESPACEnome_do_espaço_de_tabelas[ OWNER {novo_dono| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'diretório' [ WITH (opção_de_espaço_de_tabelas=valor[, ... ] ) ]
O comando CREATE TABLESPACE registra um novo
espaço de tabelas para a instância de banco de dados
[140]
[141].
O nome do espaço de tabelas deve ser diferente do nome de qualquer
espaço de tabelas existente na instância de banco de dados.
Espaços de tabelas permitem aos superusuários definirem locais alternativos no sistema de arquivos, onde podem residir arquivos de dados contendo objetos de banco de dados (como tabelas e índices).
Um usuário com os privilégios apropriados pode passar o
nome_do_espaço_de_tabelas
para os comandos
CREATE DATABASE, CREATE TABLE,
CREATE INDEX, ou ADD CONSTRAINT,
para ter os arquivos de dados para estes objetos armazenados no
espaço de tabelas especificado.
O espaço de tabelas não pode ser usado independentemente da instância onde está definido; veja Espaços de tabela.
nome_do_espaço_de_tabelas
O nome do espaço de tabelas a ser criado.
O nome não pode começar com pg_, porque estes
nomes são reservados para os espaços de tabelas do sistema.
nome_do_usuárioO nome do usuário que será o dono do espaço de tabelas. Se omitido, o padrão é o usuário que está executando o comando. Somente superusuários podem criar espaços de tabelas, mas podem atribuir como dono do espaço de tabelas um não superusuário.
diretório
O diretório que será usado para o espaço de tabelas.
O diretório deve existir (o comando
CREATE TABLESPACE não cria o diretório),
deve estar vazio, e deve pertencer ao usuário do sistema
PostgreSQL.
O diretório deve ser especificado por um nome de caminho absoluto.
opção_de_espaço_de_tabelas
Um parâmetro de espaço de tabelas a ser definido ou redefinido.
No momento, os únicos parâmetros disponíveis são
seq_page_cost,
random_page_cost,
effective_io_concurrency, e
maintenance_io_concurrency.
Definir estes valores para um espaço de tabelas específico
substitui a estimativa usual do planejador do custo de leitura
de páginas de tabelas neste espaço de tabelas,
e quantas operações de entrada/saída simultâneas são emitidas,
conforme estabelecido pelos parâmetros de configuração de mesmo
nome (veja seq_page_cost,
random_page_cost,
effective_io_concurrency,
maintenance_io_concurrency).
Poderá ser útil se um espaço de tabelas estiver localizado em um
disco mais rápido, ou mais lento, que o restante do subsistema
de E/S.
O comando CREATE TABLESPACE não pode ser
executado dentro de um bloco de transação.
Para criar o espaço de tabelas dbspace no diretório
/data/dbs do sistema de arquivos, primeiro deve
ser criado o diretório usando os recursos do sistema operacional,
e definido o dono correto:
mkdir /data/dbs chown postgres:postgres /data/dbs
Em seguida, executado o comando de criação do espaço de tabelas de dentro do PostgreSQL:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
Para criar um espaço de tabelas pertencente a um usuário de banco de dados diferente, deve ser usado um comando como este:
CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';
O comando CREATE TABLESPACE é uma extensão do
PostgreSQL.
[140]
Use o comando CREATE TABLESPACE para criar um
espaço de tabelas, que é uma alocação de espaço no banco de dados
que pode conter objetos de esquema.
Oracle 21 – CREATE TABLESPACE (N. T.)
[141]
O comando CREATE TABLESPACE define um novo
espaço de tabelas no banco de dados, atribui
contenedores
ao espaço de tabelas, e registra a definição e os atributos do
espaço de tabelas no catálogo.
IBM DB2 12.1.x – CREATE TABLESPACE statement (N. T.)