2015-08-10 5 views
5

Ich erstellte eine Tabelle, um die Aktivität meiner Anwendung zu protokollieren. Diese Tabelle protokolliert mehr als 2 Millionen Datensätze pro Monat. Deshalb möchte ich die Partitionierung verwenden Monat oder WocheMySQL Partitionierung nach Woche automatisch

CREATE TABLE IF NOT EXISTS `UL`.`Log` (
    `LogID` INT(20) NOT NULL AUTO_INCREMENT, 
    `LogDate` DATETIME NULL, 
    `AssessorName` VARCHAR(255) NULL 
    PRIMARY KEY (`LogID`), 
    INDEX `AssessorName` (`AssessorName`), 
    INDEX `LogDate` (`LogDate`) 
) 
ENGINE = INNODB; 

Aber das Problem ist, ich habe die Partitionierung manuell zu erstellen, wie

PARTITION BY RANGE (EXTRACT(YEAR_MONTH FROM LogDate)) (
    PARTITION pre_2014 VALUES LESS THAN (201400), 
    PARTITION jan_2014 VALUES LESS THAN (201401), 
    PARTITION feb_2014 VALUES LESS THAN (201402), 
.... 

Ist das eine Möglichkeit, eine Partition für Monat oder Woche automatisch zu erstellen ?

Dank

Antwort

1

nicht YEAR_MONTH() Verwenden Sie, ist es hier nicht in der Liste: http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations-functions.html

Stattdessen TO_DAYS(LogDate) und explizite Daten wie '2014-01-01' verwenden.

Nein, es gibt keine "automatische" Partitionierung. Es ist nicht allzu schwierig, Perl-Code (oder andere Sprache) zu schreiben, um die Partitionsstruktur von information_schema abzurufen und zu berechnen, welche Partition als nächstes hinzugefügt werden soll.

Was erhoffen Sie sich von PARTITIONing? Es gibt sehr wenige Vorteile. Ich habe sie aufgelistet in my blog.

Auch dieser Link verfügt über Code, um mit dem Löschen alter Partitionen umzugehen, und wie man REORGANIZE PARTITIONS jede Woche (oder Monat) effizient verwendet.

-2

Nur für den Fall, Sie brauchen diese Funktion nicht nur auf 2mil a mounth, auf meiner Arbeit loggen wir 500k - 1mil pro Tag und haben einen Log-Tisch auf 450mil Reihen über 3,5 yeah.

Aber, aber, aber ... Wenn Sie mehr anmelden dann 2mil einen mounth seine eine gute ide :)

+0

Partition Anforderungen planen eng mit Maschinenkapazität und gemeinsamer Abfrage/verwendet Fälle in Zusammenhang stehen. Es ist unmöglich, eine pauschale Aussage darüber zu treffen, ob Partitionierung benötigt wird oder ob es Effizienzverbesserungen bietet, ohne viel mehr Details zu kennen. –