Partionnement horizontal sous Oracle 9i
Introduction
Oracle 9i propose des extensions au LDD SQL pour transférer la gestion des partitionnements horizontaux au moteur du SGBD plutôt que d'en assurer une gestion manuelle.
Rappel :
Définition : Range partioning
Les partitions sont créées sur des sous-domaines continus et ordonnés de valeurs de la colonne.
Syntaxe :
CREATE TABLE nom_table (...)
PARTITION BY RANGE (nom_attribut)
(
PARTITION nom_partition_1 VALUES LESS THAN (valeur),
PARTITION ...
PARTITION nom_partition_N VALUES LESS THAN (MAXVALUE)
);
CREATE TABLE nom_table (...) PARTITION BY RANGE (nom_attribut) ( PARTITION nom_partition_1 VALUES LESS THAN (valeur), PARTITION ... PARTITION nom_partition_N VALUES LESS THAN (MAXVALUE) );
Définition : List-partioning
Les partitions sont créées sur une liste de valeurs définies a priori. Cela permet de traiter le cas de sous-domaines discrets et non ordonnés.
Syntaxe :
CREATE TABLE nom_table (...)
PARTITION BY LIST (nom_attribut)
(
PARTITION nom_partition_1 VALUES (valeur1, valueur2, etc.),
PARTITION ...
PARTITION nom_partition_N VALUES (DEFAULT)
);
CREATE TABLE nom_table (...) PARTITION BY LIST (nom_attribut) ( PARTITION nom_partition_1 VALUES (valeur1, valueur2, etc.), PARTITION ... PARTITION nom_partition_N VALUES (DEFAULT) );
Définition : Hash partioning
Les partitions sont créées sur une fonction de hachage. Cette solution est employée quand il est impossible de trouver une solution de partitionnement qui assure une répartition équilibrée dans les partitions.
Syntaxe :
Remarque : Optimiseur de requêtes
L'optimiseur de requête d'Oracle saura déterminer si dans un cas donné il peut n'exécuter une requête que sur un sous ensemble des partitions de la table. Il exclura alors les partitions inintéressantes et ainsi assurera une exécution plus rapide de la requête. Les hash-partitions ne pourront être exploitées dans ce cadre sauf dans le cas de la recherche d'une unique valeur.
Remarque : Composite partioning
Il est possible de combiner les partitionnement de type range et hash et de type range et list.
Remarque : Multicolumn partioning
Il est possible d'effectuer des partitionnements sur plusieurs colonnes.
Remarque : Partionnement d'index
Les index peuvent également être partitionnés, en correspondance ou non avec la partition de la table qu'ils indexent (et donc même si la table indexée n'est pas partitionnée).