mysql - 在 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。历史表或其他东西,但从前端应用程序,我需要查询当前年份数据和过去年份数据。
哪种方法最适合您?有什么经验吗?
谢谢!
解决方案
“每天变大”不是问题。“定期存档”是PARTITION BY RANGE
.
12 月 31 日,创建下一个分区。
根据分区包含的内容(p1999 VALUES LESS THAN (2000)
等)命名分区。
使用“可传输表空间”进行归档。5.6 和 5.7 的工作方式不同,因此请查看详细信息。
更多讨论:http: //mysql.rjweb.org/doc.php/partitionmaint
推荐阅读
- here-api - 没有国家信息的 Here Maps API 自动建议
- java - 从 Firestore 获取数据后,字符串未添加到 OnClick 侦听器中的 ArrayList
- vue.js - Vue Uncaught TypeError:_c 不是函数
- codeigniter - 在codeigniter查询的where子句中检查值为空白
- go - 如何使用 Go 最大化每秒 UDP 数据包?
- nginx - NGINX Ingress Controller 和默认后端作为 nginx 服务的 Ingress 有什么区别?
- mysql - 从 SQL 中的变量创建时间戳并将字符串格式化为时间
- flutter - 实施 bloc 技术后无法更新 listview/gridview
- html - 导航栏问题上方的警报
- tsql - 如何转置这些数据