Documentation PostgreSQL 14.22 » Référence » Commandes SQL » CREATE TABLESPACE

Précédent | Niveau supérieur | Suivant
CREATE TABLE AS | Sommaire | CREATE TEXT SEARCH CONFIGURATION

## CREATE TABLESPACE

CREATE TABLESPACE — Définir un nouvel tablespace

## Synopsis

    +CREATE TABLESPACE nom_tablespace
        [ OWNER { nouveau_propriétaire | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
        LOCATION 'répertoire'
        [ WITH ( option_tablespace = valeur [, ... ] ) ]

## Description

`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é.

### Avertissement

Un tablespace ne peut pas être utilisé indépendamment de l'instance dans laquelle il a été défini ; voir Section 23.6.

## Paramètres

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

## Notes

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.

## Exemples

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

## Compatibilité

`CREATE TABLESPACE` est une extension PostgreSQL.

## Voir aussi

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