base de données mysql partitionnement automatique
J'ai une table mysql base de données que je veux partition par jour, en particulier par mois & année. Toutefois, lorsque de nouvelles données sont ajoutées pour un nouveau mois, je ne veux pas avoir besoin de mettre à jour manuellement la base de données.
Quand j'ai créer ma base de données, j'ai des données dans Nov 09 Déc 09 Jan 10, etc. Maintenant, quand février commence, je voudrais un Fév 10 partition automatiquement créé. Est-ce possible?
Je ne sais pas si c'est la meilleure idée. Chaque fois que vous modifiez les partitions, vous serez essentiellement la réécriture de l'ensemble de la table. Cela peut prendre beaucoup de temps et de ressources.
si vous avez une meilleure idée, je serais heureux de l'entendre. Vous avez raison, c'est assez intensif (plus que ce que je voudrais), mais si elle ne s'exécute une fois par mois c'est pas trop mal - surtout quand j'ai besoin de faire régulièrement des requêtes comme "sélectionnez le 3e jour du dernier mois".
"Chaque fois que vous modifiez les partitions, vous serez essentiellement la réécriture de l'ensemble de la table": pas du tout vrai. Ajout de partitions ou de suppression de partitions est comme la création/suppression d'une table. Essentiellement instant. Seulement la modification d'une partition existante qui a déjà des données est potentiellement lent. Donc, si vous créez une nouvelle partition pour le mois prochain avant d'insérer les données qu'il contient, c'est très rapide.
si vous avez une meilleure idée, je serais heureux de l'entendre. Vous avez raison, c'est assez intensif (plus que ce que je voudrais), mais si elle ne s'exécute une fois par mois c'est pas trop mal - surtout quand j'ai besoin de faire régulièrement des requêtes comme "sélectionnez le 3e jour du dernier mois".
"Chaque fois que vous modifiez les partitions, vous serez essentiellement la réécriture de l'ensemble de la table": pas du tout vrai. Ajout de partitions ou de suppression de partitions est comme la création/suppression d'une table. Essentiellement instant. Seulement la modification d'une partition existante qui a déjà des données est potentiellement lent. Donc, si vous créez une nouvelle partition pour le mois prochain avant d'insérer les données qu'il contient, c'est très rapide.
OriginalL'auteur Jeff Storey | 2010-02-01
Vous devez vous connecter pour publier un commentaire.
Il y a quelques solutions là-bas, si vous voulez une solution totale, cochez cette post sur kickingtyres. C'est une base de la combinaison d'une procédure stockée de la manipulation de l'analyse de la partition et de la création (avec quelques traces!).
Tout ce que vous devez faire est de l'adapter à votre type de partition (l'exemple utilise un bigint partition) et le calendrier de la procédure à exécuter avec MySQL Event Scheduler.
kickingtyres lien est rompu.
J'ai mis à jour le lien avec la archive.org copie
le lien n'est pas disponible
Liens morts ne sont pas utiles.
OriginalL'auteur Nick Craver
oui, vous pourriez, comme le renforcement de la fonctionnalité de partitionnement en 5.5:
http://dev.mysql.com/tech-resources/articles/mysql_55_partitioning.html
Aurais-je besoin de l'installation d'un déclencheur, chaque mois, pour ajouter une nouvelle partition pour le mois en cours? Depuis que je ne veux pas définir tous les mois/années à l'avance...
Je ne le crois pas, rien n'est noté dans l'article de toute façon. Ces grandes améliorations, mais ne résolvent pas votre problème actuel...un j'ai été confronté lorsque SQL Server ajouté partitions au premier abord, PITA, pour sûr.
Craver. L'article que vous avez posté, avait procédures stockées pour le faire. Je suppose que je pourrais utiliser un mensuel de déclenchement (ou tâche cron, détails à venir) pour ajouter une nouvelle partition via la procédure stockée. Merci.
OriginalL'auteur user262976
Je vais faire ce que l'autre fait (mettre un lien) Rapide Introdunction à MySQL de Partitionnement
(regardez la page 50 de ce que vous avez besoin de la partition par date)
Edit: j'ai relu ton post avec plus de soin - si vous souhaitez modifier les partitions par mois, pourquoi ne pas vous créer une base de données Mysql
event
qui fait queJ'ai une sugestion. Mais je pense que vous allez vous retrouver avec un événement d'une procédure stockée pour faire ce que vous voulez.
OriginalL'auteur cristian