2015-08-10 2 views
5

Я создал таблицу для регистрации активности моего приложения. В этой таблице будет записано более 2 миллионов записей в месяц. Поэтому я хочу, чтобы использовать разделение на месяц или неделюРазделение MySQL по неделям автоматически

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; 

Но проблема в том, что я должен создать разбиение вручную, например,

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

Является ли способ создать раздел на месяц или неделю автоматически ?

Благодаря

ответ

1

Не используйте YEAR_MONTH(), то нет в списке здесь: http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations-functions.html

Вместо этого используйте TO_DAYS(LogDate) и явные даты, такие как '2014-01-01'.

Нет, автоматическое разделение отсутствует. Не слишком сложно написать код Perl (или другого языка) для извлечения структуры раздела из information_schema и вычислить, какой раздел добавить следующий.

Что вы надеетесь получить от PARTITIONing? Очень мало преимуществ. Я перечислил их in my blog.

Кроме того, эта ссылка содержит код для очистки старых разделов, а также как эффективно использовать REORGANIZE PARTITIONS каждую неделю (или месяц).

-2

На всякий случай, вам не нужна эта функция только на расстоянии 2 м в месяц, на моей работе мы регистрируем 500 тыс. - 1 мил в день и располагаем журнальным столиком на 450 милях в течение 3,5 да.

Но, но, но ... Если вы планируете войти более 2mil в Mounth его хороший язь :)

+0

требования разделов тесно связаны с производительностью машины и общего запроса/использует случаи. Невозможно сделать общее заявление о том, необходимо ли разделение или будет ли оно улучшать эффективность, не зная гораздо более специфических особенностей. –

Смежные вопросы