MySQL vient d'annoncer la release de sa version 5.1.22 RC, et parmi le top des nouvelles fonctionnalités, le partitionning est cité.
Qu'est ce donc et est-ce si bien que cela ?
Sans rentrer dans les détails de la syntaxe des requètes le partitionning permet, suivant des régles définies par l'utilisateur, de séparer physiquement sur le disque dans des fichiers différents et de façon transparente les données d'une table.
Pour prendre un exemple concret, pour un forum par exemple, deux approches sont possibles :
Mettre toutes les catégories du forum dans une même table, ou alors séparer chaque catégorie dans une table différente.
La première approche permet une gestion simple des opération sur de multiples catégories (déplacement, fusion, etc), mais dès que l'on veut vraiment isoler une catégorie en particulier, les choses sont plus complexes (aucune possibilité de restaurer une cat en particulier d'un backup en cas de crash par exemple), et les performances ne sont pas optimales (obligé d'utiliser un index sur la catégorie voulue).
La deuxième approche permet un gain de vitesse, et une gestion des données par catégorie plus simple, mais dès qu'on commence à vouloir traiter plusieurs catégories à la fois, les choses se compliquent.
Le partitionning permet d'obtenir le meilleur des deux mondes : l'utilisateur ne voit et ne manipule qu'une seule table, et on obtient les performances des tables dissociées. De plus, la façon dont les tables sont stockées sur le disque permet de récupérer uniquement certaines "partitions".
C'est l'idéal me direz vous ? Malheureusement, pas complétement. Un des gros points noirs du partitionning se situe au niveau des files descriptors. En effet, même si vous ne voulez accéder qu'à une seule catégorie en particulier, (et donc une seule partition), MySQL va ouvrir tous les fichiers correspondant à chaques partitions associées à votre table (si vous avez 1024 catégories, ca fait quand même 1024 fichiers à ouvrir en même temps).
Linux étant généralement avare de file description par defaut, si vous gérez beaucoup de catégories vous allez vite découvrir la magnifique erreur :
"Too many open files".
En bref, avant de considérer le partitionning comme le saint graal et de réecrire votre application pour en bénéficier, pensez à ce petit détail 
Message édité par joce le 02-12-2007 à 20:41:57
---------------
Life must be a preparation for the translation into another dimension.