CREATE TABLESPACE — Définir un nouvel tablespace
+CREATE TABLESPACEnom_tablespace
[ OWNER {nouveau_propriétaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ] LOCATION 'répertoire
' [ WITH (option_tablespace
=valeur
[, ... ] ) ]
CREATE TABLESPACE
enregistre un nouveau tablespace
pour la grappe de bases de données. Le nom du tablespace doit être
distinct du nom de tout autre tablespace de la grappe.
Un tablespace permet aux super-utilisateurs de définir un nouvel emplacement sur le système de fichiers pour le stockage des fichiers de données contenant des objets de la base (comme les tables et les index).
Un utilisateur disposant des droits appropriés peut passer
nom_tablespace
comme paramètre de
CREATE DATABASE
, CREATE TABLE
,
CREATE INDEX
ou ADD CONSTRAINT
pour que les fichiers
de données de ces objets soient stockés à l'intérieur du tablespace
spécifié.
Un tablespace ne peut pas être utilisé indépendamment de l'instance dans laquelle il a été défini ; voir Section 23.6.
nom_tablespace
Le nom du tablespace à créer. Le nom ne peut pas commencer
par pg_
, de tels noms sont réservés pour les
tablespaces système.
nom_utilisateur
Le nom de l'utilisateur, propriétaire du tablespace. En cas d'omission, il s'agit de l'utilisateur ayant exécuté la commande. Seuls les super-utilisateurs peuvent créer des tablespaces mais ils peuvent en donner la propriété à des utilisateurs standard.
répertoire
Le répertoire qui sera utilisé pour le tablespace. Le répertoire
doit exister (CREATE TABLESPACE
ne le créera pas),
doit être vide et doit appartenir à l'utilisateur système
PostgreSQL. Le répertoire doit être spécifié par un
chemin absolu.
option_tablespace
Un paramètre à configurer ou réinitialiser pour un tablespace.
Actuellement, les seuls paramètres disponibles sont
seq_page_cost
et random_page_cost
,
effective_io_concurrency
et
maintenance_io_concurrency
. Configurer ces valeurs
pour un tablespace particulier surchargera l'estimation habituelle de
l'optimiseur pour le coût de lecture des pages provenant de tables
stockées dans ce tablespace, ainsi que le comportement de lecture en
avance de l'exécuteur, telle qu'établie par les paramètres de
configuration du même nom (voir seq_page_cost,
random_page_cost, effective_io_concurrency, maintenance_io_concurrency). Ceci peut se révéler utile
si un des tablespaces est situé sur un disque plus rapide ou plus lent
que le reste du système d'entrées/sorties.
Les tablespaces ne sont supportés que sur les systèmes gérant les liens symboliques.
CREATE TABLESPACE
ne peut pas être exécuté à l'intérieur
d'un bloc de transactions.
Pour créer un tablespace dbspace
à l'emplacement
/data/dbs
du système de fichiers, créer d'abord
le répertoire en utilisant les commandes du système d'exploitation
et lui donner le propriétaire adéquat :
mkdir /data/dbs chown postgres:postgres /data/dbs
Puis passer la commande de création de tablespace dans PostgreSQL:
CREATE TABLESPACE espace_base LOCATION '/data/dbs';
Pour créer un tablespace appartenant à un autre utilisateur de base de données, utiliser une commande comme ceci :
CREATE TABLESPACE espace_index OWNER genevieve LOCATION '/data/indexes';
CREATE TABLESPACE
est une extension
PostgreSQL.