MySQL table de partition par mois
J'ai une immense table qui stocke de nombreux suivis des événements, comme un clic de l'utilisateur.
La table est déjà dans la 10 millions, et son de plus en plus grandes de tous les jours.
Les requêtes ont commencé à devenir plus lent lorsque j'essaie de récupérer des événements à partir d'un grand calendrier, et après avoir lu un peu sur le sujet, je comprends que le partitionnement de la table peut améliorer les performances.
Ce que je veux faire, c'est la partition de la table, sur une base mensuelle.
J'ai seulement trouvé des guides qui montrent comment partitionner manuellement chaque mois, est-il un moyen de le dire à MySQL de partition par mois et il va le faire automatiquement?
Si non, quel est la commande pour le faire manuellement compte tenu de mon partitionné par colonne est un datetime?
OriginalL'auteur shaharmor | 2013-10-14
Vous devez vous connecter pour publier un commentaire.
Comme l'explique le manuel: http://dev.mysql.com/doc/refman/5.6/en/partitioning-overview.html
C'est facilement possible par hachage de partitionnement du mois de sortie.
Ne remarque que ce que des partitions par mois et non par an, aussi il y a seulement 6 des partitions (donc 6 monhts) dans cet exemple.
Et pour le partitionnement d'une table existante (manuel: https://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html):
L'interrogation peut se faire aussi bien à partir de l'ensemble de la table:
Ou à partir des partitions spécifiques:
En effet, avec cette méthode de hachage. Vous pouvez également faire
YEAR(tr_date) * 12 + MONTH(tr_date)
bien sûrdonc, si je veux de HACHAGE basé à la fois sur l'ANNÉE et le MOIS, je peux faire quelque chose comme:
HASH(CONCAT(YEAR(datetimefield), MONTH(datetimefield))
ou devrait-il être autre chose?J'ai préféré à l'aide de
PARTITION BY HASH((YEAR(TIMESTAMP) * 100) + MONTH(TIMESTAMP))
, il donne bien les dates formatées (201511, 201512, 201601, etc) - la même chose que la fonction concat siPouvez-vous expliquer pourquoi vous n'avez que 6 des partitions et non 12 - est-ce à dire que chaque partition de stocker des données pendant 2 mois?
OriginalL'auteur Wolph
Utilisation TokuDb qui a un temps d'accès indépendant de la taille de la table.
OriginalL'auteur giuseppe