Quand ne voudrait-on PAS partitionner une base de données? (en pensant au partitionnement MySQL )
Dans mon cas
- Je vais commencer par quelques millions de lignes, il devrait augmenter à partir de là.
- Clé primaire sur un champ de caractère qui sert de contrainte de requête la plus fréquente (et les recherches sont fréquentes - au moins quelques-unes par seconde).
- La clé primaire serait hachée pour servir de clé de partition
- Des mises à jour seront apportées à chaque ligne extraite dans les requêtes fréquentes mentionnées ci-dessus
- Les recherches moins fréquentes (par rapport aux colonnes de date ou autres) devront frapper toutes les partitions
Même pour le dernier point, la recherche ne s'exécute-t-elle pas en parallèle, donc dans tous les cas, est-ce une victoire ? Quels sont les inconvénients du partitionnement? Pourquoi n'est-ce pas quelque chose que TOUT LE MONDE utilise par défaut, au moins lorsque vous regardez un million + d'enregistrements?
MISE À JOUR - J'ai sélectionné la réponse de zgguy mais notez que j'ai ajouté ma propre réponse avec les résultats de ma propre recherche, y compris un lien vers une très bonne réponse à une question similaire qui m'a été très utile.
La réponse ici est bien écrite et fait des arguments similaires à la réponse de zgguy , que le partitionnement ne vous rapporte pas beaucoup, le cas échéant, un scénario à une seule machine où les recherches les plus fréquentes sont basées sur la clé primaire ou quelque chose de similaire (parce que les recherches indexées devraient être tout aussi rapides).
En fait, un fil conducteur commun semble être que la principale raison de la partition est tangentielle et principalement liée à la gestion: par exemple, séparez vos données en fonction de la date si vous devez purger les anciens enregistrements de temps en temps. Bien qu'il ait été noté que cela peut également améliorer vos performances de recherche si vos données sont telles que la plupart des requêtes ne toucheront que les enregistrements récemment ajoutés.
J'ai également vu mentionner que MySQL ne fait jamais rien en parallèle (ce serait bien de voir des liens ou plus d'explications à ce sujet).
Personne n'a vu si l'activité d'écriture ajoute ou non des considérations différentes.
la source
La première chose qui me vient à l'esprit est l' élagage des partitions ; si ce n'est pas quelque chose que vos requêtes peuvent utiliser.
Allez-vous avoir besoin de purger une grande quantité de données de la table car le partitionnement vous aiderait. Bien que vieux mais ce post de Peter a peu de points à considérer.
et une autre chose à laquelle on peut penser est la facilité d'utilisation pour les tables simples ... le partitionnement nécessite un travail et une maintenance supplémentaires.
la source