MySQL-Tabelle, partition Monat
Ich habe eine riesige Tabelle, die speichert viele Ereignisse verfolgt, wie ein Benutzer klicken Sie auf.
In der Tabelle bereits in die 10 Millionen, und seine immer größer jeden Tag.
Die Abfragen ab, um langsamer zu werden, wenn ich versuchen zu Holen, Ereignisse aus einer großen Zeitrahmen, und nach dem Lesen einiges über das Thema ich verstehe, dass die Partitionierung der Tabelle können steigern die Leistung.
Was ich tun will ist die partition in der Tabelle auf einem pro-Monats-basis.
Habe ich nur guides, die zeigen, wie man die partition manuell jeden Monat, gibt es eine Möglichkeit, nur sagen, MySQL partition Monat und es wird dies automatisch?
Wenn nicht, was ist der Befehl, um es manuell tun, in Anbetracht meiner partitionierten Spalte ein datetime?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie erläutert durch das Handbuch: http://dev.mysql.com/doc/refman/5.6/en/partitioning-overview.html
Dies ist leicht möglich, indem die hash-Partitionierung des Monats Ausgabe.
Tun, beachten Sie, dass dies nur Partitionen nach Monat und nicht nach Jahr, auch sind es nur 6 Partitionen (also 6 Monate Mietdauer) in diesem Beispiel.
Und für die Partitionierung einer vorhandenen Tabelle (Anleitung: https://dev.mysql.com/doc/refman/5.7/en/alter-table-partition-operations.html):
Abfragen kann getan werden, sowohl aus der gesamten Tabelle:
Oder von bestimmten Partitionen:
YEAR(tr_date) * 12 + MONTH(tr_date)
natürlichHASH(CONCAT(YEAR(datetimefield), MONTH(datetimefield))
oder sollte es etwas anderes sein?PARTITION BY HASH((YEAR(TIMESTAMP) * 100) + MONTH(TIMESTAMP))
es gibt schön formatierte Daten (201511, 201512, 201601, etc) - dasselbe wie die Funktion concat obwohlWhen PARTITION BY HASH is used, MySQL determines which partition of num partitions to use based on the modulus of the result of the user function. In other words, for an expression expr, the partition in which the record is stored is partition number N, where N = MOD(expr, num)
Also Partitionen umfassen würde Monate 1&7, 2&8, etc., Jahre ignoriert.Verwenden, TokuDb, die hat eine Zugriffszeit unabhängig von der Tabellengröße.