首页 > 解决方案 > 在 MySQL 中归档旧数据并组织大数据

问题描述

我必须设计一个 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。历史表或其他东西,但从前端应用程序,我需要查询当前年份数据和过去年份数据。

哪种方法最适合您?有什么经验吗?

谢谢!

标签: mysqldatabasedatabase-design

解决方案


“每天变大”不是问题。“定期存档”是PARTITION BY RANGE.

12 月 31 日,创建下一个分区。

根据分区包含的内容(p1999 VALUES LESS THAN (2000)等)命名分区。

使用“可传输表空间”进行归档。5.6 和 5.7 的工作方式不同,因此请查看详细信息。

更多讨论:http: //mysql.rjweb.org/doc.php/partitionmaint


推荐阅读