Архивирование старых данных в MySQL и организация больших данных - PullRequest
1 голос
/ 10 марта 2020

Мне нужно спроектировать базу данных MySql, в которой таблица содержит миллион записей, и она с каждым днем ​​становится все больше, мой первый подход - использовать раздел по году:

пример:

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
    PARTITION p0 VALUES LESS THAN (1991),
    PARTITION p1 VALUES LESS THAN (1996),
    PARTITION p2 VALUES LESS THAN (2001),
    PARTITION p3 VALUES LESS THAN MAXVALUE
);

Мои цели - периодически архивировать все данные, где-нибудь, exe. исторические таблицы или что-то еще, но из внешнего интерфейса мне нужно запросить данные текущего года и данные прошлых лет.

Какой для вас наилучший подход? любой опыт?

Спасибо!

1 Ответ

0 голосов
/ 18 марта 2020

«Больше каждый день» не проблема. «Периодически архивировать» - это хорошее использование PARTITION BY RANGE.

On De c. 31, создайте следующий раздел.

Назовите разделы в соответствии с тем, что они содержат (p1999 VALUES LESS THAN (2000), et c).

Используйте «переносимые табличные пространства» для архивирования. 5.6 и 5.7 работают по-разному, поэтому проверьте детали.

Дополнительные обсуждения: http://mysql.rjweb.org/doc.php/partitionmaint

...