CREATE TABLESPACE — define un nuevo tablespace
CREATE TABLESPACEnombre_tablespace[ OWNER {nuevo_propietario| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'directorio' [ WITH (opción_tablespace=valor[, ... ] ) ]
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.
Un tablespace no se puede utilizar independientemente del clúster en el que está definido; consulta Section 22.6.
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_usuarioEl 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.
CREATE TABLESPACE no se puede ejecutar dentro de un bloque de transacción.
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';
CREATE TABLESPACE es una extensión de PostgreSQL.