2015-08-10 19 views
5

Ho creato una tabella per registrare l'attività della mia applicazione. Questa tabella registrerà più di 2 milioni di record al mese. Così voglio usare il partizionamento per mese o settimanaPartizionamento MySQL per settimana automaticamente

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; 

Ma il problema è che devo creare il partizionamento manualmente come

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), 
.... 

È il modo per creare automaticamente una partizione per mese o settimana ?

Grazie

risposta

1

Non utilizzare YEAR_MONTH(), non è nella lista qui: http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations-functions.html

Al contrario, utilizzare TO_DAYS(LogDate) ed esplicite date, come '2014-01-01'.

No, non esiste il partizionamento "automatico". Non è un compito troppo difficile scrivere codice Perl (o altro linguaggio) per recuperare la struttura delle partizioni dallo information_schema e calcolare quale partizione aggiungere in seguito.

Cosa speri di ottenere da PARTITIONing? Ci sono pochissimi benefici. Li ho elencati in my blog.

Inoltre, quel collegamento ha il codice per gestire l'eliminazione delle vecchie partizioni, oltre a come utilizzare in modo efficiente REORGANIZE PARTITIONS ogni settimana (o mese).

-2

Nel caso in cui non si abbia bisogno di questa funzione solo per 2 miglia al mese, sul mio lavoro registriamo 500k - 1mil al giorno e abbiamo una tabella di registro su righe 450mil oltre 3,5 sì.

Ma, ma, ma ... Se si prevede di registrare più di un 2mil mounth sua una buona ide :)

+0

requisiti delle partizioni sono strettamente legati alla capacità della macchina e di query comuni/usa casi. È impossibile fare una dichiarazione generale sul fatto che il partizionamento sia necessario o se fornirebbe miglioramenti di efficienza senza conoscere molte più specifiche. –