Tablespaces
Les ‘tablespace' dans PostgreSQL™ permettent aux administrateurs de bases de données (ce paragraphe s'adresse donc en priorité à eux) de définir l'emplacement dans le système de fichiers où seront stockés les fichiers représentant les objets de la base de données. Une fois créé, un tablespace peut être référencé par son nom lors de la création d'objets.
En utilisant les tablespaces, un administrateur peut contrôler les emplacements sur le disque d'une installation PostgreSQL™. Ceci est utile dans au moins deux cas. Tout d'abord, si la partition ou le volume sur lequel le groupe a été initialisé arrive à court d'espace disque mais ne peut pas être étendu, un tablespace peut être créé sur une partition différente et utilisé jusqu'à ce que le système soit reconfiguré.
Deuxièmement, les tablespaces permettent à un administrateur d'utiliser sa connaissance des objets de la base pour optimiser les performances. Par exemple, un index qui est très utilisé peut être placé sur un disque très rapide et disponible, comme un périphérique mémoire. En même temps, une table stockant des données archivées et peu utilisée ou dont les performances ne portent pas à conséquence pourra être stockée sur un disque système plus lent, moins cher.
Exemple :
CREATE TABLESPACE espace_index OWNER alain LOCATION ‘data/index' ;
OWNER alain indique que le propriétaire est alain. Il doit avoir les droits en écriture sur le répertoire ‘data/index' (attention à utiliser / pour les noms de répertoires).
Une fois créé on pourra référencer le tablespace, par exemple lors de la création d'une table :
CREATE TABLE foo(i int) TABLESPACE montablespace;
Les commandes de modifications des objets, que nous verrons dans le cours, permettent de réaffecter a posteriori un objet à un tablespace particulier
ex : ALTER TABLE foo SET TABLESPACE nouveautablespace ;
Attention :
Manipuler les Tablespaces est réservé aux administrateurs aguerris. Positionner un tablespace sur un système de fichier temporaire comme un disque RAM peut mettre en péril la fiabilité de l'instance entière.