CREATE TABLESPACE

CREATE TABLESPACE — define un nuevo tablespace

Synopsis

CREATE TABLESPACE nombre_tablespace
    [ OWNER { nuevo_propietario | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
    LOCATION 'directorio'
    [ WITH ( opción_tablespace = valor [, ... ] ) ]

Descripción

CREATE TABLESPACE registra un nuevo tablespace a nivel de clúster. El nombre del tablespace debe ser diferente al de cualquier tablespace existente en el clúster de la base de datos.

Un tablespace permite a los superusuarios definir una ubicación alternativa en el sistema de archivos donde pueden residir los archivos de datos que contienen objetos de la base de datos (como tablas e índices).

Un usuario con los privilegios apropiados puede pasar el parámetro nombre_tablespace a CREATE DATABASE, CREATE TABLE, CREATE INDEX o ADD CONSTRAINT para que los archivos de datos de estos objetos se almacenen en el tablespace especificado.

Warning

Un tablespace no se puede utilizar independientemente del clúster en el que está definido; consulta Section 22.6.

Parámetros

nombre_tablespace

El nombre del tablespace que se va a crear. El nombre no puede comenzar con pg_, ya que tales nombres están reservados para los tablespaces del sistema.

nombre_usuario

El nombre del usuario que será el propietario del tablespace. Si se omite, por defecto será el usuario que ejecuta el comando. Solo los superusuarios pueden crear tablespaces, pero pueden asignar la propiedad de los mismos a usuarios que no sean superusuarios.

directorio

El directorio que se utilizará para el tablespace. El directorio debe existir (CREATE TABLESPACE no lo creará), debe estar vacío y debe ser propiedad del usuario del sistema PostgreSQL. El directorio debe especificarse mediante una ruta absoluta.

opción_tablespace

Un parámetro del tablespace que se desea establecer o restablecer. Actualmente, los únicos parámetros disponibles son seq_page_cost, random_page_cost, effective_io_concurrency y maintenance_io_concurrency. Establecer estos valores para un tablespace en particular anulará la estimación habitual del planificador sobre el costo de leer páginas de las tablas en ese tablespace, y cuántas E/S concurrentes se emiten, según lo establecido por los parámetros de configuración del mismo nombre (consulta seq_page_cost, random_page_cost, effective_io_concurrency, maintenance_io_concurrency). Esto puede ser útil si un tablespace se encuentra en un disco que es más rápido o más lento que el resto del subsistema de E/S.

Notas

CREATE TABLESPACE no se puede ejecutar dentro de un bloque de transacción.

Ejemplos

Para crear un tablespace llamado dbspace en la ubicación del sistema de archivos /data/dbs, primero crea el directorio usando las herramientas del sistema operativo y establece la propiedad correcta:

mkdir /data/dbs
chown postgres:postgres /data/dbs

Luego, ejecuta el comando de creación del tablespace dentro de PostgreSQL:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';

Para crear un tablespace propiedad de un usuario de base de datos diferente, utiliza un comando como este:

CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

Compatibilidad

CREATE TABLESPACE es una extensión de PostgreSQL.

Consulte también

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