CREATE TABLESPACE — Définir un nouvel tablespace
+CREATE TABLESPACEnom_tablespace
[ OWNER {nouveau_propriétaire
| 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 superutilisateurs 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 22.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 superutilisateurs 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 ê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
et
effective_io_concurrency
. Configurer un de ces paramètres
pour un tablespace particulier va surcharger l'estimation habituelle du
planificateur pour le coût de lecture des pages sur les tables de ce
tablespace (voir seq_page_cost,
random_page_cost et
effective_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.
Créer un tablespace espace_base
sur
/data/dbs
:
CREATE TABLESPACE espace_base LOCATION '/data/dbs';
Créer un tablespace espace_index
sur
/data/indexes
et en donner la propriété à l'utilisatrice
genevieve
:
CREATE TABLESPACE espace_index OWNER genevieve LOCATION '/data/indexes';
CREATE TABLESPACE
est une extension
PostgreSQL.