Tél: 01 57 60 83 57
Tél: +33 1 57 60 83 57 (de l'étranger)
USA/Canada Subscription Renewals: +1-866-221-0634
La fonctionnalité de partitionnement MySQL permet aux développeurs et aux DBAs d’améliorer les performances des bases de données et de simplifier la gestion de bases de données de très grande ampleur. MySQL autorise un partitionnement horizontal dans lequel les lignes d’une base de données sont divisées en plus petits ensembles de données, puis distribuées dans plusieurs répertoires et sur plusieurs disques.
Le partitionnement augmente les performances des requêtes puisque des ensembles de données plus petits ont uniquement besoin d’un accès à des opérations spécifiques, et non à une table unique de grande taille. Il est également possible de répartir une table partitionnée sur des lecteurs physiques différents, ce qui permet de réduire la contention sur les interfaces d’E/S physiques en cas d’accès simultané à plusieurs partitions.
Le partitionnement simplifie aussi la gestion des données. Par exemple, sans avoir à intervenir personnellement, un DBA peut supprimer des partitions spécifiques dans une table partitionnée tout en conservant intactes les partitions restantes (plutôt que d’élaborer une opération de suppression en masse, génératrice de fragmentation, dans la table entière).
Plusieurs méthodes de partitionnement permettent aux DBA de contrôler avec précision le mode de partitionnement des données :
Chaque partition contient des lignes correspondant à un ensemble précis (une plage) de valeurs. Le partitionnement par plages est utile pour l’exécution fréquente de requêtes dépendant directement de la colonne employée pour le partitionnement de la table, ou pour supprimer en un clin d’œil d’anciennes données par simple suppression d’une table.
Le partitionnement par listes s’apparente au partitionnement par plages. La principale différence réside dans le fait que ce mode de partitionnement permet de segmenter les données d’après une liste prédéfinie de valeurs précisées par le DBA, et non selon un ensemble de plages adjacentes de valeurs.
Le partitionnement par colonnes permet d’utiliser plusieurs colonnes dans des clés de partitionnement. Ces multiples colonnes servent au placement des lignes dans les partitions et à identifier quelles partitions sont vérifiées pour les lignes correspondantes lors des opérations d’élagage des partitions. Le partitionnement par colonnes est une extension du partitionnement par plages et du partitionnement par listes.
Le partitionnement par hachage sert principalement à garantir une distribution équilibrée des données sur un nombre prédéterminé de partitions. Dans le cadre du partitionnement par plages ou par listes, vous devez spécifier explicitement dans quelle partition une colonne donnée est à stocker. Avec le partitionnement par hachage, MySQL s’en charge pour vous et il vous faut seulement préciser une valeur ou une expression de colonne à hacher, ainsi que le nombre de partitions selon lequel la table partitionnée est à diviser.
Une variante du partitionnement par hachage est la méthode de hachage linéaire qui exploite un algorithme plus complexe pour partitionner les données ; une approche qui, potentiellement, accélère les opérations d’ajout, de suppression, de fusion et de fragmentation des partitions si vous manipulez des tables de plusieurs téraoctets.
Le partitionnement par clés poursuit le même objectif que le partitionnement par hachage, puisque MySQL garantit une répartition égale des données via une clé de hachage générée par le système et non via les expressions définies par l’utilisateur employées dans le cadre du partitionnement par hachage. Le partitionnement par clés autorise un large éventail de types de données à utiliser pour le partitionnement.
Le sous-partitionnement permet une division supplémentaire de chaque partition au sein d’une table partitionnée et s’adresse conceptuellement à des tables de taille particulièrement importante, permettant ainsi la distribution des données et des index sur un grand nombre de serveurs et de disques.
Au moyen des clauses « WHERE » ou « ON » appropriées, il est possible pour l’outil MySQL Optimizer d’accéder uniquement à des partitions pour lesquelles des valeurs correspondantes existent. Ainsi donc, l’exécution de la requête peut fournir un ordre de grandeur plus rapidement que la même requête exécutée dans une table non partitionnée.
