menu
Menu
help/index
Index/help

Les clusters

Introduction - Généralités

Définition : Le cluster est une organisation physique des données qui consiste à regrouper physiquement (dans un même bloc disque) les lignes d'une ou plusieurs tables ayant une caractéristique commune (une même valeur dans une ou plusieurs colonnes) constituant la clé du cluster.

La mise en cluster a trois objectifs :

Le regroupement en cluster est totalement transparent à l'utilisateur : des tables mises en cluster sont toujours vues comme des tables indépendantes.

Par exemple on pourrait mettre en cluster les tables emp et dept selon n_dept. Ces tables seraient réorganisées de la façon suivante : un bloc de cluster serait créé pour chaque numéro de département, ce bloc contenant à la fois les lignes de la table emp et de la table dept correspondant à ce numéro de département. La jointure entre les tables emp et dept selon n_dept deviendrait alors beaucoup plus rapide, puisqu'elle serait déjà réalisée dans l'organisation physique des tables.

Pour que l'on puisse mettre une table en cluster il faut que l'une au moins des colonnes faisant partie du cluster soit définie comme obligatoire (NOT NULL).

On peut indexer les colonnes d'une table en cluster, y compris les colonnes correspondant à la clé ou à une partie de la clé du cluster. La clé elle-même est automatiquement indexée, on peut éventuellement la réindexer pour créer un index unique servant à contrôler son unicité.

Créer un cluster

Avant de pouvoir mettre en cluster une ou plusieurs tables il faut créer le cluster au moyen de la commande CREATE CLUSTER dont la syntaxe est la suivante :
CREATE CLUSTER nom_cluster
       (cle1 type1,
        cle2 type2,
        ...)
où l'on donne un nom au cluster, et où l'on définit le nom et le type des colonnes constituant la clé du cluster.
CREATE CLUSTER nom_cluster
       (cle1 type1,
        cle2 type2,
        ...)
[SIZE taille_du_bloc]
[COMPRESS | NOCOMPRESS]
[SPACE nom_de_space_definition]
dans laquelle :
SIZE
est la taille d'un bloc de cluster. Cette taille peut varier de 1/6 de bloc oracle à 1 bloc oracle (2k octets sur vax/vms), ce paramètre doit être choisi de façon à avoir un bon remplissage des blocs.
COMPRESS|NOCOMPRESS
est relatif à l'index qui sera crée sur la clé du cluster
SPACE
spécifie le SPACE DEFINITION qui définira les paramètres d'allocation d'espace pour le cluster.
CREATE CLUSTER DEM
(DEPNO NUMBER)
SIZE 512

Mise en cluster d'une table

En principe c'est dès sa création qu'il faut spécifier si une table sera implantée dans un cluster.

Lors de la création de la table

L'option cluster de l'ordre CREATE TABLE permet de spécifier que la table doit être mise en cluster. Le cluster doit déjà exister.
CREATE TABLE nom_table
(nom_col1 TYPE1 NOT NULL ,
(nom_col2 TYPE2 NOT NULL ,
				...)
CLUSTER NOM_CLUSTER  (nom_coli, nom_colj...)
nom_coli, nom_colj sont des noms de colonnes de la table, elles seront identifiées une à une aux colonnes clés du cluster spécifiées à la création du cluster.

Table déjà existante

En principe cela n'est pas possible, il faut donc procéder de la façon suivante :

Retrait d'une table d'un cluster

Pour retirer une table d'un cluster il faut : ceci ne détruit pas la table, mais la reconstruit en dehors du cluster.

Supprimer un cluster

Un cluster ne contenant aucune table peut être supprimé par la commande :
DROP CLUSTER nom_cluster;
Remarque : Les performances du cluster ne sont valables que si on n'a pas de blocs chaînés (ex de grande table).
© nasrlarbi@free.fr

2001-05-01 14:31:31