Ce blog est dédié a toutes les personnes intéressées de près ou de loin à aux bases de donneés et plus particulièrement à ORACLE.
Partition by range.
Le partitionnement "by range" convient parfaitement pour historiser les données. Cela permet d'organiser les données selon un intervalle dans le temps (jours, mois, trimestre ,année).
Il est fréquent que les grosses tables soient intérrogées par periode. Dans ce cas la Oracle utilisera le critère de partitionnement pour n'accèder qu'à une petite partie des données.
Partition by list.
Le partitionnement par liste s'effectue surtout sur des colonnes à faible cardinalité. C'est à dire dont le nombre de valeur distinctes est peu elevé. Attention, contrairement au "partition by range" et"partition by hash", la clé de partitionnement ne peut concerner qu'une seule colonne.
Partition by hash.
Le partitionnement par hash permet de distribuer les données selon un algorithme qu'Oracle applique en fonction de la colonne partionné. L'idée est qu'Oracle répartie les données de façon égale en les différentes partitions. Pour que le répartion soit homogène il faut bien évidemment choisir une clé de hash qui elle même soit répartie de facon homogéne dans la table.
Par exemple, si j'ai une table de facture et que je partitionne par hash sur l'information client en décidant de créer 64 partitions alors que je n'ai que deux clients distincts avec 90 % de facture pour un client et 10 pour l'autre le choix de partitionnement par hash est à revoir. Il aurait mieux fallu choisir un partitionnement par liste.
En revanche, si j'ai un millier de clients avec environ le même nombre de factures par client, on aurra une répartition homogène. Pour le partitionnement par hash, Oracle recommande fortement que le nombre de partition soit une puissance de 2 !
Remarque : Avec cet article, ca fait deux fois que j'indique qu'ORACLE recommande que pour une partition par hash, le nombre de partitions soit une puissance de deux.
Alors je peux me poser la question de lapertinence de cette recommandation. Elle a le mérite de venir d'Oracle. Mais bon nombres de concepts sont appliqués dans des applications dites sensibles sans que leur origine ou bienfondé soit vérifié.
Alors il n'est certe pas possible de toujours tout vérifier, mais dans de nombreux cas, cela ne prends que quelques minutes. Alors que dans quelques mois (après de grandes aventures...), il sera beaucoup plus compliqué de faire marche arrière, même si on est convaincu que ce qui est en place est "bancal".
Revenons à nos moutons.
Crééons deux tables partitionnées par hash une avec 4 ( 2^2) partitions et une autre avec 5 partitions.