CREATE TABLESPACE

CREATE TABLESPACE — define um novo espaço de tabelas

Sinopse

CREATE TABLESPACE nome_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 [, ... ] ) ]

Descrição

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.

Atenção

O espaço de tabelas não pode ser usado independentemente da instância onde está definido; veja Espaços de tabela.

Parâmetros

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ário

O 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.

Notas

O comando CREATE TABLESPACE não pode ser executado dentro de um bloco de transação.

Exemplos

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';

Conformidade

O comando CREATE TABLESPACE é uma extensão do PostgreSQL.

Veja também

CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE


[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.)